4-1 JDOM 開始解析前的準備工作
1.創建一個SAXBuilder對象
SAXBuilder saxbuilder=newSAXBuilder();
2.創建輸入流,將xml文件加載到輸入流中(拋出FileNotFoundException)
Inputstream in=new FileInputstream("xxx.xml");
3.通過SAXBuilder的Build方法將輸入流加載到saxb中獲取dom對象
Document doc = saxbuilder.build(in);
4.通過document對象獲取xml文件的根結點
Element rootElement =doc.getRootElement();
5.獲取根結點下的子節點的List集合
List<Element> bookList = rootElement.getChildren();
4-2 應用 JDOM 解析節點屬性
//繼續進行解析
for
(Element book : bookList) {
System.out.println(
"===開始解析第"
+(bookList.indexOf(book)+
1
)+
"本書==="
);
//解析book的屬性
List<Attribute> attrList = book.getAttributes();
// //知道節點下屬性名稱時,獲取節點值
// book.getAttributeValue("id");
//遍歷attrList(針對不清楚book節點下屬性的名字和數量)
for
(Attribute attr : attrList) {
//遍歷屬性名
String attrName = attr.getName();
//遍歷屬性值
String attrValue = attr.getValue();
System.out.println(
"屬性名:"
+attrName+
"---屬性值:"
+attrValue);
}
System.out.println(
"===結束解析第"
+(bookList.indexOf(book)+
1
)+
"本書==="
);
}
4-3
應用 JDOM 解析子節點的名和值
- JDOM中每個節點都有getchildren()方法
// 對book節點的子節點的節點名以及節點值的遍歷
List<Element> bookChilds = book.getChildren();
for (Element child : bookChilds) {
System.out.println("節點名:" + child.getName() + "----節點值:" + child.getValue());
}
4-4 JDOM 解析時亂碼的處理
1.修改xml第一行的encoding屬性
2.在代碼中處理,應用IO流知識
//創建輸入流,將XML文件加載到輸入流中
InputStream in = new FileInputStream("src/book.xml");
//使用包裝流InputStreamReader進行讀取編碼的指定
InputStreamReader isr = new InputStreamReader(in,"UTF-8");
4-5 在 JDOM 中存儲 Book 對象
和之前的存儲方式並無太大差異。
創建book對象ArrayList集合
添加節點屬性值到book
if(attrName.equals("id")){
personEntity.setId(attrValue);
}
添加子節點屬性值到book
if (child.getName().equals("name")) {
bookEntity.setName(child.getValue());
}
4-6 關於 JDOM 使用過程中 JAR 包的引用
1.通過右鍵項目,選擇build Path下的Add External Archives導入系統任意路徑下的jar包。但是這種方式並沒有將jar包真正導入項目中,一旦遷移,則會丟失
2.通過右鍵項目,新建lib文件夾,直接將jar包拷貝到lib文件夾下,然後再通過build Path將jar包導入進來
4-7 應用 DOM4J 解析節點屬性
1、創建一個 SAXReader 對象
SAXReader saxReader = new SAXReader();
2、通過SAXReader對象的read方法加載books.xml文件,獲取docuemnt對象
Document document = saxReader.read(new file(...../book.xml));
3、通過 getRootElement() 獲取根節點bookstore
Element bookstore = document.getRootElement();
4、通過 elementIterator() 獲取book的迭代器
Iterator it = bookstore.elementIterator();
5、遍歷迭代器,獲取根節點中的信息(書籍)
while(it.hasNext()){
//獲取子節點的元素
Element book = (Element)it.next();
}
6、獲取屬性節點類似 JDOM 解析
List<Attribute> attrs = book.attributes();
7、遍歷,獲取屬性節點名、值
book.getName() book.getValue()
8、獲取book子節點的迭代器
Iterator itt = book.elementIterator();
8、遍歷,獲取元素節點名、值
book.getName() book.getStringValue() / book.getText()