XML文档
<?xml version="1.0" encoding="UTF-8"?>
<personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='personal.xsd'>
<person id="Big.Boss">
<name>
<family>Boss</family>
<given>Big</given>
</name>
<email>[email protected]</email>
<link subordinates="one.worker two.worker three.worker four.worker five.worker" />
</person>
<person id="one.worker">
<name>
<family>Worker</family>
<given>One</given>
</name>
<email>[email protected]</email>
<link manager="Big.Boss" />
</person>
<person id="two.worker">
<name>
<family>Worker</family>
<given>Two</given>
</name>
<email>[email protected]</email>
<link manager="Big.Boss" />
</person>
<person id="three.worker">
<name>
<family>Worker</family>
<given>Three</given>
</name>
<email>[email protected]</email>
<link manager="Big.Boss" />
</person>
<person id="four.worker">
<name>
<family>Worker</family>
<given>Four</given>
</name>
<email>[email protected]</email>
<link manager="Big.Boss" />
</person>
<person id="five.worker">
<name>
<family>Worker</family>
<given>Five</given>
</name>
<email>[email protected]</email>
<link manager="Big.Boss" />
</person>
</personnel>
代码
package xml;import java.io.File;
import java.util.Iterator;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class Text { public static void main(String[] args) {
Text t=new Text();
t.parserXml("src/personal-schema.xml");
} public void parserXml(String fileName) {
File inputXml = new File(fileName);
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(inputXml);
Element employees = document.getRootElement();
for (Iterator i = employees.elementIterator(); i.hasNext();) {
Element employee = (Element) i.next();
for (Iterator j = employee.elementIterator(); j.hasNext();) {
Element node = (Element) j.next();
System.out.println(node.getName() + ":" + node.getText());
}
}
} catch (DocumentException e) {
System.out.println(e.getMessage());
}
}
}
运行结果
name:
email:[email protected]
link:
name:
email:[email protected]
link:
name:
email:[email protected]
link:
name:
email:[email protected]
link:
name:
email:[email protected]
link:
name:
email:[email protected]
link:
读不到name节点里面的子节点
<?xml version="1.0" encoding="UTF-8"?>
<personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='personal.xsd'>
<person id="Big.Boss">
<name>
<family>Boss</family>
<given>Big</given>
</name>
<email>[email protected]</email>
<link subordinates="one.worker two.worker three.worker four.worker five.worker" />
</person>
<person id="one.worker">
<name>
<family>Worker</family>
<given>One</given>
</name>
<email>[email protected]</email>
<link manager="Big.Boss" />
</person>
<person id="two.worker">
<name>
<family>Worker</family>
<given>Two</given>
</name>
<email>[email protected]</email>
<link manager="Big.Boss" />
</person>
<person id="three.worker">
<name>
<family>Worker</family>
<given>Three</given>
</name>
<email>[email protected]</email>
<link manager="Big.Boss" />
</person>
<person id="four.worker">
<name>
<family>Worker</family>
<given>Four</given>
</name>
<email>[email protected]</email>
<link manager="Big.Boss" />
</person>
<person id="five.worker">
<name>
<family>Worker</family>
<given>Five</given>
</name>
<email>[email protected]</email>
<link manager="Big.Boss" />
</person>
</personnel>
代码
package xml;import java.io.File;
import java.util.Iterator;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class Text { public static void main(String[] args) {
Text t=new Text();
t.parserXml("src/personal-schema.xml");
} public void parserXml(String fileName) {
File inputXml = new File(fileName);
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(inputXml);
Element employees = document.getRootElement();
for (Iterator i = employees.elementIterator(); i.hasNext();) {
Element employee = (Element) i.next();
for (Iterator j = employee.elementIterator(); j.hasNext();) {
Element node = (Element) j.next();
System.out.println(node.getName() + ":" + node.getText());
}
}
} catch (DocumentException e) {
System.out.println(e.getMessage());
}
}
}
运行结果
name:
email:[email protected]
link:
name:
email:[email protected]
link:
name:
email:[email protected]
link:
name:
email:[email protected]
link:
name:
email:[email protected]
link:
name:
email:[email protected]
link:
读不到name节点里面的子节点
能不能用代码解释
import java.util.List;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;public class Dom4JAnalysisXml { public static void main(String args[])
{
new Dom4JAnalysisXml().parserXml("personal-schema.xml");
}
public void parserXml(String fileName) {
File inputXml = new File(fileName);
SAXReader saxReader = new SAXReader();
try {
Document document = saxReader.read(inputXml);
Element employeesRoot = document.getRootElement();
List<Node> employeeNodeList=employeesRoot.selectNodes("person");
for(int i=0;i<employeeNodeList.size();i++){
Node person=employeeNodeList.get(i);
String family=person.selectSingleNode("name/family").getText();
String given=person.selectSingleNode("name/given").getText();
String email=person.selectSingleNode("email").getText();
Element link=(Element)person.selectSingleNode("link");
String subordinates=link.attribute(0).getText();
System.out.println("person: "+"name.family="+family+" name.given="+given+" email="+email+" link="+subordinates);
}
}
catch (DocumentException e) {
System.out.println(e.getMessage());
}
}
}
先判断是否是Link节点,是的话用上述方法就可以获取到。
node.attributeValue("manager")
可以灵活读取xml