Java读取xml数据

时间:2023-12-11 11:40:14

Java读取xml数据

xml中的代码

<?xml version="1.0" encoding="UTF-8"?>

<books id="aaa">
<book id="1">
<name>书名1</name>
<price>100</price>
</book>
<book id="2">
<name>书名2</name>
<price>300</price>
</book>
</books>

java中的代码

import java.io.File;
import java.io.IOException; import javax.lang.model.element.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.Node; import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; public class ReadXml { public static void main(String[] args) { try {
//java读取xml的方法。DOM方式
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse(new File("NewFile.xml"));
//获取文档根元素
org.w3c.dom.Element root=document.getDocumentElement();
//输出根元素id的值
System.out.println(root.getAttribute("id"));
//获取子级元素
NodeList list= root.getElementsByTagName("book");
//循环输出xml标签元素的值
for (int i = 0; i < list.getLength(); i++) {
org.w3c.dom.Element book=(org.w3c.dom.Element)list.item(i);
System.out.println("--------");
System.out.println("id="+book.getAttribute("id"));
//获取所有子节点
NodeList list1=book.getChildNodes();
//循环输出子节点中的元素内容
for (int j = 0; j < list1.getLength(); j++) {
org.w3c.dom.Node child=(org.w3c.dom.Node)list1.item(j);
//去掉空白节点
if(child instanceof org.w3c.dom.Element){
System.out.println(child.getNodeName()+"标签内容是"+child.getTextContent());
}
} //读取子节点中元素的值,都要重新创建一个element对象
/*org.w3c.dom.Element name=(org.w3c.dom.Element) book.getElementsByTagName("name").item(0);
System.out.println("name="+name.getTextContent());*/
}
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
} catch (SAXException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace();
}
} }

运行结果

aaa
--------
id=1
name标签内容是书名1
price标签内容是100
--------
id=2
name标签内容是书名2
price标签内容是300