zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    IPAD3终于发布了!苹果在5年内还是很难被超越!
    今天更新了ubuntu11.10!
    折腾两日系统重装,对比ubuntu11.04 和windows 7旗舰版!(不定时更新添加新的体验)
    DELL XPS M1530安装MAC OS X Lion 10.7.3经验分享!
    ubuntu 11.04 指纹识别的安装!
    Dlink DIR615L 和水星(mercury) MW300R桥接方法!
    POJ 3522 Slim Span(kruskal 变型)
    POJ 3621 Sightseeing Cows(SPFA + 构造负环)
    POJ 2553 The Bottom of a Graph(Tarjan)
    POJ 2728 Desert King(最优比率生成树)
  • 原文地址:https://www.cnblogs.com/m-ming/p/11598476.html
Copyright © 2011-2022 走看看