日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

xml中的Document和Attribute

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xml中的Document和Attribute 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.Document

導入dom4j的步驟

  • 去官網下載 zip 包。http://www.dom4j.org/
  • 在項目中創建一個文件夾:lib
  • 將dom4j-2.1.1.jar文件復制到 lib 文件夾
  • 在jar文件上點右鍵,選擇 Add as Library -> 點擊OK
  • 在類中導包使用
  • 得到Document對象

    步驟:

    文件Contact.xml放在src目錄下

  • 創建一個SAXReader對象,用于讀取 xml 文件
  • 從類路徑下加載xml文件,得到輸入流對象
  • 通過 SAXReader對象的read(InputStream in )方法,從輸入流中讀取,生成文檔對象
  • 代碼

    /**1. 得到文檔對象2. 得到根元素*/public static void main(String[] args) throws FileNotFoundException, DocumentException {//1. 創建類: 讀取XML文件SAXReader reader = new SAXReader();//不建議這么寫//FileInputStream in = new FileInputStream("D:\\IdeaWork\\JavaEE105\\day23-xml\\src\\Contacts.xml");//src目錄就是編譯以后的類路徑,從類路徑下得到輸入。InputStream in = Demo3Document.class.getResourceAsStream("/Contacts.xml");//2.通過reader來讀取xml, 生成了一個document對象Document document = reader.read(in);//3. 輸出文檔System.out.println(document);//4. 得到文檔以后,通過文檔得到根元素Element rootElement = document.getRootElement();System.out.println(rootElement);}

    Document常用方法

    方法名功能說明
    Element getRootElement()通過文檔對象得到根元素
    String getName()獲取元素名
    List<Element> elements()獲取所有子元素
    List<Element> elements(String name)獲取知名名字的多個子元素

    2.Attribute

    Attribute常用方法:

    方法名功能說明
    String getName()得到屬性的名字
    String getValue()得到屬性的值

    得到屬性值的兩種方式

  • 先得到Attribute對象,再通過Attribute對象得到屬性的值
  • 通過方法attributeValue()直接得到屬性值
  • 案例:

  • 使用2種方式,得到contact上id屬性值
  • 在contact元素上添加一個vip的屬性值為true/false,得到contact上所有的屬性名和屬性值
  • 效果

    代碼:

    public static void main(String[] args) throws DocumentException {//1. 創建SAXReaderSAXReader reader = new SAXReader();//2. 調用read 方法,讀取 xml 文件Document document = reader.read(Demo4Attribute.class.getResourceAsStream("/Contacts.xml"));//3. 得到根元素Element rootElement = document.getRootElement();//4. 獲得第1個contact元素對象Element contact = rootElement.element("contact");//5. 通過方式1:得到contact上id屬性值Attribute idAttr = contact.attribute("id");String idValue = idAttr.getValue();System.out.println(idValue);//6. 通過方式2:得到contact上id屬性值String id = contact.attributeValue("id");System.out.println(id);//7. 得到contact上所有的屬性名和屬性值List<Attribute> attributes = contact.attributes();for (Attribute attribute : attributes) {System.out.println("屬性名:" + attribute.getName());System.out.println("屬性值:" + attribute.getValue());}}

    獲取文本內容
    通過元素對象得到文本字符串得到文本元素的前提:先得到元素對象

    • 注意:

    空格、換行、制表符:也是屬于文本的一部分,所以在解析xml文件的時候,格式化XML文件要注意。

    元素中得到文本有關的方法

    Element**元素中的方法說明
    String getText()得到元素中文本
    String elementTextTrim(元素名)得到子元素中文本,去掉先后空格
    String elementText(元素名)得到子元素中文本

    需求
    得到第1個contact中的name元素,輸出name元素的文本。分別通過下面三個方法得到:

  • 通過getText()方法得到
  • 直接得到元素的內容
  • 得到去掉空格的文本
  • 代碼;

    public static void main(String[] args) throws DocumentException {// 1.創建SAXReaderSAXReader reader = new SAXReader();// 2.調用read 方法,讀取 xml 文件Document document = reader.read(Demo5Text.class.getResourceAsStream("/Contacts.xml"));// 3.得到根元素Element rootElement = document.getRootElement();// 得到contact標簽Element contact = rootElement.element("contact");// 得到name標簽中的文本Element name = contact.element("name");System.out.println(name.getText());// 得到子元素的文本System.out.println(contact.elementText("name"));// 得到子元素的文本并且去掉前后空格System.out.println(contact.elementTextTrim("name"));}

    XML解析案例

    目標

    利用 Dom4j 的知識,將Contact.xml 文件中的聯系人數據封裝成List集合,其中每個元素是實體類Contact。打印輸出 List 中的每個元素。

    運行效果

    數據準備

    Contact.xml

    <?xml version="1.0" encoding="UTF-8"?> <contactList><contact id="1"><name>潘金蓮</name><gender></gender><email>panpan@itcast.cn</email></contact><contact id="2"><name>武松</name><gender></gender><email>wusong@itcast.cn</email></contact><contact id="3"><name>武大狼</name><gender></gender><email>wuda@itcast.cn</email></contact> </contactList>
    Contact.java實體類
    // 聯系人實體類 public class Contact {private int id;private String name;private String gender;private String email;// 省略構造方法get、set、tostring}

    代碼:

    public static void main(String[] args) throws DocumentException {//1. 得到SaxReaderSAXReader reader = new SAXReader();//2. 得到文檔對象Document document = reader.read(Demo6Contact.class.getResourceAsStream("/Contact.xml"));//3. 得到根元素Element rootElement = document.getRootElement();//4. 創建集合List<Contact> list = new ArrayList<>();//5. 得到所有聯系人List<Element> contactElements = rootElement.elements();//每個就是一個聯系人for (Element contactElement : contactElements) {//創建一個聯系人Contact contact = new Contact();//System.out.println(contactElement.getName()); //打印標簽名//得到id屬性值,將字符串轉成int類型int id = Integer.parseInt(contactElement.attributeValue("id"));contact.setId(id);//得到子元素中文本contact.setName(contactElement.elementText("name"));contact.setGender(contactElement.elementText("gender"));contact.setEmail(contactElement.elementText("email"));//將當前對象添加到集合中list.add(contact);}//打印集合中所有的聯系人for (Contact contact : list) {System.out.println(contact);}}

    總結

    以上是生活随笔為你收集整理的xml中的Document和Attribute的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。