Java - XML解析示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.io.ByteArrayInputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XmlParserDemo
{
/*
<?xml version="1.0" encoding="UTF-8"?>
<routetable>
<route>
<da>138517</da>
<ne>SMSC1</ne>
</route>
<route>
<da>139139</da>
<ne> SMSC2</ne>
</route>
</routetable>
*/
private static final String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<routetable>"
+ "<route><da>138517</da>"
+ "<ne>SMSC1</ne></route>"
+ "<route><da>139139</da>"
+ "<ne>SMSC2</ne></route>"
+ "</routetable>";

public static void main(String[] args)
{
try
{
// 生成一个Dom解析器
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();

// 解析XML
//Document document = db.parse(new File("test.xml"));
Document document = db.parse(new ByteArrayInputStream(xmlString.getBytes()));
document.getDocumentElement().normalize();

NodeList table = document.getElementsByTagName("routetable");
System.out.println("routetable list len = " + table.getLength());
for(int i = 0; i < table.getLength(); ++i)
{
System.out.println("routetable " + i + " name = " + table.item(i).getNodeName());
NodeList list = table.item(i).getChildNodes();
System.out.println("route list len = " + list.getLength());
}

System.out.println();

NodeList routeList = document.getElementsByTagName("route");
for(int i = 0; i < routeList.getLength(); ++i)
{
Node route = routeList.item(i);
if(route.getNodeType() == Node.ELEMENT_NODE)
{
Element element = (Element) route;
System.out.println("id = " + (element.getAttribute("id").isEmpty() ? "no ID" : element.getAttribute("id")));
System.out.println("da -> " + element.getElementsByTagName("da").item(0).getTextContent());
System.out.println("ne -> " + element.getElementsByTagName("ne").item(0).getTextContent());
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}