xml中的Document和Attribute
生活随笔
收集整理的這篇文章主要介紹了
xml中的Document和Attribute
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.Document
導入dom4j的步驟
得到Document對象
步驟:
文件Contact.xml放在src目錄下
代碼
/**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() | 得到屬性的值 |
得到屬性值的兩種方式
案例:
效果
代碼:
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文件要注意。
元素中得到文本有關的方法
| String getText() | 得到元素中文本 |
| String elementTextTrim(元素名) | 得到子元素中文本,去掉先后空格 |
| String elementText(元素名) | 得到子元素中文本 |
需求
得到第1個contact中的name元素,輸出name元素的文本。分別通過下面三個方法得到:
代碼;
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言float二进制输出代码_C语言学
- 下一篇: Linux用户与用户组