dom4j中對應XML的DOM樹建立的繼承關係
針對於XML標準定義,對應於圖2-1列出的內容,dom4j提供了以下實現:
同時,dom4j的NodeType枚舉實現了XML規範中定義的node類型。如此可以在遍歷xml文檔的時候通過常量來判斷節點類型了。
常用API
class org.dom4j.io.SAXReader
- read 提供多種讀取xml文件的方式,返回一個Domcument對象
interface org.dom4j.Document
- iterator 使用此法獲取node
- getRootElement 獲取根節點
interface org.dom4j.Node
- getName 獲取node名字,例如獲取根節點名稱爲bookstore
- getNodeType 獲取node類型常量值,例如獲取到bookstore類型爲1——Element
- getNodeTypeName 獲取node類型名稱,例如獲取到的bookstore類型名稱爲Element
interface org.dom4j.Element
- attributes 返回該元素的屬性列表
- attributeValue 根據傳入的屬性名獲取屬性值
- elementIterator 返回包含子元素的迭代器
- elements 返回包含子元素的列表
interface org.dom4j.Attribute
- getName 獲取屬性名
- getValue 獲取屬性值
interface org.dom4j.Text
- getText 獲取Text節點值
interface org.dom4j.CDATA
- getText 獲取CDATA Section值
interface org.dom4j.Comment
- getText 獲取註釋
public static Map<String,String> readStringXmlOut(String xml) {
Map<String,String> map = new HashMap<String,String>();
Document doc = null;
try {
// 將字符串轉爲XML
doc = DocumentHelper.parseText(xml);
// 獲取根節點
Element rootElt = doc.getRootElement();
// 拿到根節點的名稱
Iterator iters = rootElt.elementIterator("user");
// 遍歷根節點
while (iters.hasNext()) {
Element itemEle = (Element) iters.next();
String usercode = itemEle.elementTextTrim("user_code");
String username = itemEle.elementTextTrim("user_name");
String terminalid = itemEle.elementTextTrim("terminal_id");
String op = itemEle.elementTextTrim("op");
map.put("usercode", usercode);
map.put("username", username);
map.put("op", op);
}
Iterator iterop = rootElt.elementIterator("op");
while (iterop.hasNext()) {
Element itemEle = (Element) iterop.next();
String op= itemEle.getTextTrim();
map.put("op", op);
}
return map;
} catch (Exception e) {
return null;
}
}