Jaxp解析方式(一般)

2017-05-09  本文已影响0人  di調的悲伤

一:获得文档对象

//1、获得工厂实例
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//2、使用工厂生成解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//3、通过解析器解析指定文件获得文档对象document
File xml = new File("./src/xxx.xml");
Document document = builder.parse(xml);

二:查询和遍历节点

//1、getElementsByTagName("shouting");获得NodeList集合
NodeList tags = document.getElementsByTagName("shouting");
//2、遍历
for(int i=0;i<tags.getLength();i++){
  Node node = tags.item(i);
  String textContent = node.getTextContent();
  System.out.println(textContent);
}

三:创建元素并添加对应节点

//1、创建标签<shouting></shouting>
Element shoutingTag = document.createElement("shouting");
//2、创建文本或者子元素节点
Text text = document.createTextNode("Hello World!getDocumentElement()");
//3、将文本加入到标签内 <shouting>Hello World!</shouting>
shoutingTag.appendChild(text);
//4、获得根节点的两种方式
//Node root = document.getFirstChild();
Element root = document.getDocumentElement();
//5、将新节点添加想添加的节点下
root.appendChild(shoutingTag);

到此 文档对象写入已经完成,目前改变后的文档对象还保存在内存中 需要回写到文件中(增删改都要进行回写)

三:删除节点

//1、getElementsByTagName("shouting");获得NodeList集合
NodeList tags = document.getElementsByTagName("shouting");
//2、删除操作
//假定删除最后一个节点
Node lastTag = tags.item(tags.getLength()-1);
//获得要删除节点的父节点
Node parentNode = lastTag.getParentNode();
//在父节点上进行删除操作 并且返回删除的节点
Node oldNode = parentNode.removeChild(lastTag);     

注意要回写文档

四:修改操作和修改或添加属性

//1、getElementsByTagName("shouting");获得NodeList集合
NodeList tags = document.getElementsByTagName("shouting");
//2、对节点进行修改操作
Node lastTag = tags.item(tags.getLength()-1);
//修改文本内容
lastTag.setTextContent("进行修改");
//修改属性 (Element类上操作)
Element n = (Element)lastTag;
n.setAttribute("src", "sssssshting");  

注意要回写文档

五:回写document

TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer tf = tFactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult("src/xxx.xml"));
上一篇下一篇

猜你喜欢

热点阅读