DOM4J jar包 獲取xml檔案中的標籤內容
// 建立解析器物件
SAXReader reader = new SAXReader();
Document doc = reader.read(new FileInputStream("students.xml"));
// 獲取根標籤物件
Element rootElement = doc.getRootElement();
// 獲取根標籤下的子標籤 預設獲取的是第一個子標籤
Element stuElement = rootElement.element("student");
System.out.println(stuElement.getName());
System.out.println("-------------以下是獲取所有子標籤---------------------");
// 獲取所有的子標籤
List<Element> eles = rootElement.elements();
for (Element ele : eles) {
System.out.println(ele.getName());
}
// 方式三 獲取所有子標籤
System.out.println("-------------通過迭代器獲取所有子標籤---------------------");
Iterator<Element> elementIterator = rootElement.elementIterator();
while (elementIterator.hasNext()) {
Element element = elementIterator.next();
System.out.println(element.getName());
}
System.out.println("-------------以下是獲取屬性物件--------------------------");
Element element = rootElement.element("student");
Attribute attribute = element.attribute("id");
String value = attribute.getValue();
String name = attribute.getName();
System.out.println(name);
System.out.println(value);
// 方式2:直接獲取屬性值
System.out.println("------------------------------------------");
String value2 = rootElement.element("student").attributeValue("id");
System.out.println(value2);
// 方式三:獲取所有的屬性物件
List<Attribute> attributes = rootElement.element("student").attributes();
for (Attribute atr : attributes) {
String name2 = atr.getName();
String value3 = atr.getValue();
System.out.println(name2 + "======" + value3);
}
System.out.println("---------------通過迭代器獲取所有的屬性物件--------------------------");
Iterator<Attribute> attributeIterator = rootElement.element("student").attributeIterator();
while(attributeIterator.hasNext()){
Attribute attribute2 = attributeIterator.next();
System.out.println(attribute2.getName()+"=="+attribute2.getValue());
}
System.out.println("--------------獲取標籤之間的文字-----------------------");
//層層往下拿
String text = doc.getRootElement().element("student").element("name").getText();
System.out.println(text);
//方式2:
String text2 = doc.getRootElement().element("student").elementText("name");
System.out.println(text2);
// 抽取方法獲取所有的節點
// getNodes(rootElement);
// 獲取節點物件
// Node node = doc.node(0);//只能獲取一個子節點
// System.out.println(node.getName());
// 獲取所有的節點
// Iterator<Node> iterator = doc.nodeIterator();
// while (iterator.hasNext()) {
// Node nodes = iterator.next();
// System.out.println(nodes.getName());
//
// }
}
private static void getNodes(Element ele) {
System.out.println(ele.getName());
Iterator<Node> iterator = ele.nodeIterator();
while (iterator.hasNext()) {
Node nodes = iterator.next();
if (nodes instanceof Element) {//
Element ele2 = (Element) nodes;
getNodes(ele2);// 遞迴呼叫 方法內部呼叫方法本身 注意遞迴比較耗費資源,因為他要不斷的載入方法進棧記憶體
}
}
}
/*獲取節點物件:1.node() 獲取單個節點物件 2.nodeIterator(); 獲取多個節點物件 只能獲取子節點
* 2.獲取根標籤物件 getRootElement()
* 3.Element();獲取第一個子標籤 Elements() 獲取所有的子標籤
* elememtesIterator() 獲取所有子標籤物件
* 4.attribute() 獲取單個屬性物件 getName()獲取屬性的鍵 getValue()獲取屬性的值
* attributes()獲取所有的屬性物件
* attributeIterator() 獲取所有的屬性物件
* 直接獲取屬性物件的值 attributeValue()
* 5.先獲取到文字所在的標籤物件 通過getText()拿出這個標籤直接的文字
* elementText("name");
*
*
*
*
*
*
*
*
*
*
*/