XML文件如下
<?xml version="1.0" encoding="UTF-8" standalone="no"?><书架>
<书>
<书名 name="xxx">爱上java</书名>
<作者>lad</作者>
<售价>562元</售价>
<售价>55</售价>
<售价>562元</售价>
</书>
<书>
<书名>java艺术</书名>
<作者>lad</作者>
<售价>88</售价>
</书>
</书架>
1.读取其中的节点值并打印输出
@Test
public void test2() throws Exception{
//1创建工厂
DocumentBuilderFactory df=DocumentBuilderFactory.newInstance();
//2生产bulider
DocumentBuilder db=df.newDocumentBuilder();
//3得到docment
Document d=db.parse("src/xmlDemo/Book.xml");
//读取文档中的某个元素的值
NodeList nodelist=d.getElementsByTagName("书名");
Node node=nodelist.item(1);
String s=node.getTextContent();
System.out.println(s);
}
2.从根节点读取
@Test
public void test2() throws Exception{
DocumentBuilderFactory dbfactroy=DocumentBuilderFactory.newInstance();
DocumentBuilder dbulider=dbfactroy.newDocumentBuilder();
Document doument=dbulider.parse("src/xmlDemo/Book.xml");
//得到根节点
Node root=doument.getElementsByTagName("书架").item(0);
//NodeList list=doument.getElementsByTagName("书");
print(root);
}
private void print(Node root) {
if(root instanceof Element)//若是element则进行输出
System.out.println(root.getNodeName());
NodeList list=root.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node node=list.item(i);
print(node);
}
}
3、往Xml文件中插入节点
//往xml里添加节点
@Test
public void teat4() throws Exception{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse("src/xmlDemo/Book.xml");
//创建节点
Element element=document.createElement("售价");
element.setTextContent("562元");
//得到参考节点
Element ec=(Element)document.getElementsByTagName("售价").item(0);
//往挂载节点书籍上链接
Element e=(Element)document.getElementsByTagName("书").item(0);
//往参考节点之前插入
//e.appendChild(element);
e.insertBefore(element, ec);
//从内存写入xml文档
TransformerFactory factory2=TransformerFactory.newInstance();
Transformer transformer=factory2.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/xmlDemo/Book.xml")));
}