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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java之DocumentBuilderFactory解析xml

發布時間:2023/12/4 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java之DocumentBuilderFactory解析xml 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、About documentBuilderFactory API description


1)、 javax.xml.parsers 包DocumentBuilderFactory創建DOM模式的解析器對象, DocumentBuilderFactory是抽象工廠類,不能直接實例化,但是有newInstance方法


2)、DocumentBuilderFactory.newInstance() 得到創建 DOM 解析器的工廠

?

?

?

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance()

?



3)、newDocumentBuilder方法得到 DOM 解析器對象

?

?

?

?

DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();

?



4)、DOM解析器解析輸入流,這里可以是XML,文檔轉化為輸入流,或者字符串轉為ByteArrayInputStream,DOM 解析器對象的 parse() 方法解析 XML 文檔,得到代表整個文檔的 Document 對象

?

?

InputStream is = new FileInputStream("xxx.xml"); documentBuilder.parse(is); documentBuilder.parse(new ByteArrayInputStream(str.getBytes()));


?
5)、得到 XML 文檔的根節點

?

Element rootElement = document.getDocumentElement();



6)、得到節點的子節點

?

?

?

NodeList studentInfo = appElement.getChildNodes();

?

?

?

?

2、Test Demo

?

?

?

?

Student.java文件

package com.parse.doc;public class Student {public String name;public String age;public String sex;public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "name=" + name + ", age=" + age + ", sex=" + sex;} }

ParseXml.java文件

package com.parse.doc;import java.io.ByteArrayInputStream; import java.util.ArrayList; import java.util.List;import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList;public class ParseXml {public static String xml = "<Students><student><name><![CDATA[陳喻]]></name><age><![CDATA[26]]></age><sex><![CDATA[男]]></sex></student><student><name><![CDATA[陳彩鳳]]></name><age><![CDATA[25]]></age><sex><![CDATA[女]]></sex></student><student><name><![CDATA[陳紫宣]]></name><age><![CDATA[2]]></age><sex><![CDATA[女]]></sex></student><student><name><![CDATA[陳紫曦]]></name><age><![CDATA[7個月]]></age><sex><![CDATA[女]]></sex></student></Students>";public static final String STUDENT = "student";public static final String NAME = "name";public static final String AGE = "age";public static final String SEX = "sex";public static void main(String args[]) {List<Student> students = parseXmlByDoc(xml);if (students != null && students.size() > 0) {for (Student student : students) {System.out.println(student);}} else {System.out.println("students size is 0");}}public static List<Student> parseXmlByDoc(String str) {if (str == null || "".equals(str)) {System.out.println("str is null or ''");return null;}DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();List<Student> students = new ArrayList<Student>();DocumentBuilder documentBuilder;try {documentBuilder = documentBuilderFactory.newDocumentBuilder();Document document = documentBuilder.parse(new ByteArrayInputStream(str.getBytes()));Element rootElement = document.getDocumentElement();NodeList studentNodeList = rootElement.getElementsByTagName(STUDENT);for (int i = 0; i < studentNodeList.getLength(); i++) {Element appElement = (Element) studentNodeList.item(i);NodeList studentInfo = appElement.getChildNodes();Student student = new Student();for(int j = 0; j < studentInfo.getLength(); j++) { Element element = (Element) studentInfo.item(j);String appAttr = element.getTagName();switch (appAttr) {case NAME:student.setName(element.getTextContent());break;case AGE:student.setAge(element.getTextContent());break;case SEX:student.setSex(element.getTextContent());break;default:break;} }students.add(student);}} catch (Exception e) {e.printStackTrace();return null;}return students;} }

?

?

?

?

3、Running results

?

name=陳喻, age=26, sex=男 name=陳彩鳳, age=25, sex=女 name=陳紫宣, age=2, sex=女 name=陳紫曦, age=7個月, sex=女

?

?

?

?

?

總結

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

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