• dom4j读取xml和dtd的使用方式


     package xmlTest;
     
    import java.util.List;
     
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    import org.junit.Test;
     
    public class XmlTest {
    @Test
    public void test() throws DocumentException{
    //1.创建SAXReader对象reader
    SAXReader reader = new SAXReader();
    //2.reader对象关联指定xml文件,创建Document
    Document document = reader.read("src\person.xml");
    //3.获取根节点
    Element root = document.getRootElement();
    //4.通过根节点获取子节点
    @SuppressWarnings("unchecked")
    List<Element> elements = root.elements("person");
    //5.遍历子节点,并输出
    for(Element person:elements){
    //获取子节点中的属性
    String id = person.attributeValue("id");
    //获取子节点中的内容
    Element nameElement = person.element("name");
    Element ageElement = person.element("age");
    Element scoreElement = person.element("score");
    System.out.println(id+" "+nameElement.getText()+" "+ageElement.getText()+" "+scoreElement.getText());
    }
    }
    }
    <?xml version="1.0" encoding="UTF-8"?>
     
    <!-- 这是xml中的注释 xml用法 :由于实际工作中 可能会出现互相传递一组数据的情况直接传递数据文件 传统的数据文件可读性较差 并且需要io流解析所以创建了xml版本的数据文件现在认为不仅xml可以用于互相传递数据 也可以用作配置文件所以xml 现在基本上作为配置文件和数据文件两种格式存在 -->
     
    -<persons>
     
     
    -<person id="1001">
     
    <name>azrail</name>
     
    <age>23</age>
     
    <score>15</score>
     
    </person>
     
     
    -<person id="1002">
     
    <name><涛哥></name>
     
    <age>19</age>
     
    <score>100</score>
     
    </person>
     
     
    -<person id="1003">
     
    <name>晟哥</name>
     
    <age>21</age>
     
    <score>100</score>
     
    </person>
     
     
    -<person id="1004">
     
    <name>浩哥</name>
     
    <age>18</age>
     
    <score>100</score>
     
    <car id="1" name="bmw"/>
     
     
    -<money>
     
    -<![CDATA[
    <> 这里是纯文本 想些什么就写什么 不会被转译 &lt;
    ]]>
    </money>
     
    </person>
     
    </persons>

    //TVSCHEDULE.dtd  dtd文件
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE TVSCHEDULE [
     
    <!ELEMENT TVSCHEDULE (CHANNEL+)>
    <!ELEMENT CHANNEL (BANNER,DAY+)>
    <!ELEMENT BANNER (#PCDATA)>
    <!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
    <!ELEMENT HOLIDAY (#PCDATA)>
    <!ELEMENT DATE (#PCDATA)>
    <!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
    <!ELEMENT TIME (#PCDATA)>
    <!ELEMENT TITLE (#PCDATA)> 
    <!ELEMENT DESCRIPTION (#PCDATA)>
     
    <!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
    <!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
    <!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
    <!ATTLIST TITLE RATING CDATA #IMPLIED>
    <!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>
     
    ]>
    <?xml version="1.0" encoding="UTF-8"?>
     
    <!DOCTYPE TVSCHEDULE>
     
    -<TVSCHEDULES>
     
     
    -<TVSCHEDULE NAME="1">
     
     
    -<CHANNEL CHAN="1">
     
    <BANNER/>
     
     
    -<DAY>
     
    <DATE/>
     
    <HOLIDAY/>
     
    </DAY>
     
    </CHANNEL>
     
    </TVSCHEDULE>
     
     
    -<TVSCHEDULE NAME="1">
     
     
    -<CHANNEL CHAN="1">
     
    <BANNER/>
     
     
    -<DAY>
     
    <DATE/>
     
     
    -<PROGRAMSLOT VTR="">
     
    <TIME/>
     
    <TITLE LANGUAGE="" RATING=""/>
     
    <DESCRIPTION/>
     
    </PROGRAMSLOT>
     
    </DAY>
     
    </CHANNEL>
     
    </TVSCHEDULE>
     
    </TVSCHEDULES>
  • 相关阅读:
    python实例26[查询修改文件的属性]
    [SCM]源码管理 VisualSVN Server+TortoiseSVN
    持续集成之“依赖管理”
    Spoon:在“云”上运行桌面应用程序
    数字签名的验证
    判断Linux/Unix为32位或64位
    持续集成理论和实践的新进展
    [SCM]源码管理 SVN Server
    [BuildRelease Management]Parabuild
    为VM增加磁盘空间
  • 原文地址:https://www.cnblogs.com/m-ming/p/11598476.html
Copyright © 2020-2023  润新知