</pre><pre name="code" class="html"><pre name="code" class="plain">
在java中解析xml文件,想想也是一个面试加分项,于是乎有必要来一篇博客记录一波,详情如下:
这是我用到的一个简单的例子,写成xml格式:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<story>
<book id="1">
<name>红楼梦</name>
<author>曹雪芹</author>
<price>56.6</price>
</book>
<book id="2">
<name>西游记</name>
<author>吴承恩</author>
<price>82.6</price>
</book>
</story>
</books>
然后在Java里对其进行解析:
public class DealXml {
public static void main(String[] args) {
try {
//获取Factory对象,DocumentBuilderFactory是抽象类没有new方法
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
//通过factory创建DocumentBuilder
DocumentBuilder builder = factory.newDocumentBuilder();
//用File流获取xml文件路径,parse方法进行xml文件解析并用document封装
Document document = builder.parse(new File("f:/note.xml"));
//解析出来的document对象获得其根节点并打印
Element element = document.getDocumentElement();
System.out.println("root:" + element);
//通过“book”标签在根节点内查找类似子节点
NodeList list = element.getElementsByTagName("book");
NodeList list1 = element.getElementsByTagName("story");
//遍历子节点
for (int i = 0; i < list.getLength(); i++) {
System.out.println("----------------------------");
//在根节点中通过标签来查找对应的数据
Element e=(Element) list.item(i);
System.out.println("e=" + e);
Element e2=(Element) element.getElementsByTagName("book").item(i);
System.out.println("id=" + e2.getAttribute("id"));
Element e3=(Element) element.getElementsByTagName("name").item(i);
System.out.println(e3.getNodeName() + e3.getTextContent());
Element e4=(Element) element.getElementsByTagName("author").item(i);
System.out.println(e4.getNodeName() + e4.getTextContent());
Element e5=(Element) element.getElementsByTagName("price").item(i);
System.out.println(e5.getNodeName() + e5.getTextContent());
Element e6=(Element) list1.item(i);
System.out.println("e6=" + e6);
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
最后,可以得到如下输出结果:
大概说明一下,根节点是xml文件里的book,没有属性所以是null,story是最外层一个标签,也只有一个,所以第二个直接是null并没有查到story,然后其他的属性都是根据book标签来查到并添加打印的,基本上就完成了简单的xml解析了!