Summary of Java's XML file parsing, node addition, and deletion operations

高洛峰
Release: 2017-01-11 14:52:50
Original
2420 people have browsed it

1. Java code:
Mainly uses dom for operation

package test; 
import java.io.IOException; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerConfigurationException; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.NodeList; 
import org.w3c.dom.Text; 
import org.xml.sax.SAXException; 
public class XmlOprate { 
Document doc; 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder; 
NodeList imags; 
String path; 
public NodeList getImags() { 
return imags; 
} 
public void setImags(NodeList imags) { 
this.imags = imags; 
} 
/** 
* 构造方法 
* @param path:xml文件的路径 
* @param nodes:要解析的xml节点名称 
*/ 
public XmlOprate(String path) { 
super(); 
this.path = path; 
System.out.println(System.getProperty("user.dir")); 
} 
/** 
* 解析XML 
* @param path 
*/ 
public void readXml(){ 
try { 
builder = factory.newDocumentBuilder(); 
Document doc=builder.parse(path); 
doc.normalize(); 
NodeList imags =doc.getElementsByTagName("imags"); 
this.setImags(imags); 
for (int i=0;i<imags.getLength();i++){ 
Element link=(Element) imags.item(i); 
System.out.print("title: "); 
System.out.println(link.getElementsByTagName("title").item(0).getFirstChild().getNodeValue()); 
System.out.print("URL: "); 
System.out.println(link.getElementsByTagName("url").item(0).getFirstChild().getNodeValue()); 
System.out.print("imgsrc: "); 
System.out.println(link.getElementsByTagName("imgsrc").item(0).getFirstChild().getNodeValue()); 
System.out.println(); 
} 
}catch (ParserConfigurationException e) { 
e.printStackTrace(); 
} catch (SAXException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
} 
/** 
* addCode 
* @param path 
*/ 
public void addXmlCode(String imgsrc,String title,String url){ 
try { 
builder = factory.newDocumentBuilder(); 
Document doc=builder.parse(path); 
doc.normalize(); 
Text textseg; 
Element imag=doc.createElement("imags"); 
Element linkimgsrc=doc.createElement("imgsrc"); 
textseg=doc.createTextNode(imgsrc); 
linkimgsrc.appendChild(textseg); 
imag.appendChild(linkimgsrc); 
Element linktitle=doc.createElement("title"); 
textseg=doc.createTextNode(title); 
linktitle.appendChild(textseg); 
imag.appendChild(linktitle); 
Element linkurl=doc.createElement("url"); 
textseg=doc.createTextNode(url); 
linkurl.appendChild(textseg); 
imag.appendChild(linkurl); 
doc.getDocumentElement().appendChild(imag); 
TransformerFactory tFactory =TransformerFactory.newInstance(); 
Transformer transformer; 
transformer = tFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(new java.io.File(path)); 
transformer.transform(source, result); 
}catch(Exception e){ 
} 
} 
/** 
* delete xml code 
* @param path 
*/ 
public void delXmlCode(){ 
try { 
builder = factory.newDocumentBuilder(); 
doc=builder.parse(path); 
doc.normalize(); 
NodeList imags =doc.getElementsByTagName("imags"); 
Element elink=(Element) imags.item(0); 
elink.removeChild(elink.getElementsByTagName("imgsrc").item(0)); 
elink.removeChild(elink.getElementsByTagName("title").item(0)); 
elink.removeChild(elink.getElementsByTagName("url").item(0)); 
doc.getFirstChild().removeChild(elink); 
TransformerFactory tFactory =TransformerFactory.newInstance(); 
Transformer transformer = tFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(new java.io.File(path)); 
transformer.transform(source, result); 
} catch (ParserConfigurationException e) { 
e.printStackTrace(); 
} catch (SAXException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} catch (TransformerConfigurationException e) { 
e.printStackTrace(); 
} catch (TransformerException e) { 
e.printStackTrace(); 
} 
} 
}
Copy after login

2. XML part

<?xml version="1.0" encoding="UTF-8" ?> 
<root> 
<imags> 
<imgsrc>images/ad-01.jpg</imgsrc> 
<title>胡志明市</title> 
<url>http://torchrelay.beijing2008.cn/cn/journey/hochiminhcity/</url> 
</imags> 
<imags> 
<imgsrc>images/ad-02.jpg</imgsrc> 
<title>香港2</title> 
<url>http://torchrelay.beijing2008.cn/cn/journey/hongkong/</url> 
</imags> 
</root>
Copy after login

3. Summary:
Look at three methods of operating xml (read, write, delete), their initialization statements are all the same:

builder = factory.newDocumentBuilder(); 
Document doc=builder.parse(path); 
doc.normalize();
Copy after login

At first I planned to take out the same part and write it in the constructor, but during the test I found that this would always report Null pointer error (it bothered me for a long time);
When I just put

builder = factory.newDocumentBuilder();
Copy after login


in the initialization statement of the builder, there is no problem in reading, but when writing or deleting Sometimes an error will be reported;
So I wrote it like this now. It feels a bit messy, but I didn’t think of any good method, so I posted it here first. It may be useful in the future

For more articles related to Java's analysis of XML files, node addition, and deletion operations, please pay attention to the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template