java对XML文件的解析、节点的增加、删除操作总结_JSP编程

1、java代码:
主要采用dom来进行操作

复制代码 代码如下:

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();
}
}
}

2、xml部分

复制代码 代码如下:

<?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>

3、总结:
看对xml操作的三个方法(读、写、删),他们的初始化语句都相同:

复制代码 代码如下:

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

开始我打算把这部分相同的部分拿出来写在构造方法中,但是在测试中发现,这样总是会报空指针的错误(搞了我好久);
而只是把
builder = factory.newDocumentBuilder();
放到builder的初始化语句中的时候,读没问题,但是当写或者删的时候也会报错;
所以就写成现在这样了,感觉有点乱乱的,但也没想到什么好的方法,就先贴到这里了,以后可能会用得着

时间: 2024-09-18 21:53:08

java对XML文件的解析、节点的增加、删除操作总结_JSP编程的相关文章

java 生成XML文件后,能不能去掉其中的根节点,但是不能删除根节点中的子节点内容

问题描述 java 生成XML文件后,能不能去掉其中的根节点,但是不能删除根节点中的子节点内容 比如 这个,生成的XML文件格式内容为: <?xml version=""1.0"" encoding=""UTF-8""?> <!--查询行号--> <!--机构码--> <!--公共交易机构名称--> <!--交易来源--> <!--交易名称--> <

DOM 对Jbpm jdpl.xml文件的解析

package com.huike.leave.service.util;  import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import j

如何用最简单的方法删除xml文件下指定节点的全部内容?

问题描述 如何用最简单的方法删除xml文件下指定节点的全部内容? 要删除data节点及节点下的全部内容,应该怎么做?求代码! 解决方案 用什么语言呢?java里面操作xml的工具有dom4j和jdom等,需要的话回答一声,附上代码. 解决方案二: InputStream is = new FileInputStream("D://dom4j.xml"); SAXReader reader = new SAXReader(); Document doc = reader.read(is)

使用qt5操作xml文件,删除xml文件中的节点和修改xml文件节点的数据值

问题描述 使用qt5操作xml文件,删除xml文件中的节点和修改xml文件节点的数据值 使用qt5操作xml文件,删除xml文件中的节点和修改xml文件中节点的数据值. 那位大神知道,如果有代码就更好了. 谢谢 解决方案 QT XML文件 修改节点修改XML文件的节点属性值

为什么在xml文件的根节点加了一个属性值就读取不到其子节点的数据了呢

问题描述 为什么在xml文件的根节点加了一个属性值(showStyle="T")就读取不到其子节点的数据了呢<?xmlversion="1.0"encoding="utf-8"?><huashuaishowStyle="T"><CustomerServiceCId="1"><Id>1</Id><UserName>张三</UserN

谢谢先,该xml文件的string节点中的内容,我怎么能读出来呢。。

问题描述 <?xmlversion="1.0"?><ArrayOfStringxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"><string>c:120150201053143.jpg</string><string>c:1201502010

c# 解析xml文件-C#解析xml文件的解析类

问题描述 C#解析xml文件的解析类 如何写一个C#类实现以下描述:XML文件的内容: 要求: 解析出这一句话中的CreateActivity,并生成一行字符串: NodeType=CreateActitiy;DisplayName="用户名";NodeName="Create" 请各位大神帮帮忙,写一个C#类,谢谢!

JAVA对XML文件的读写(有具体的代码和解析)

XML 指可扩展标记语言(EXtensible Markup Language),是独立于软件和硬件的信息传输工具,应用于 web 开发的许多方面,常用于简化数据的存储和共享. xml指令 处理指令,简称PI (processing instruction).处理指令用来指挥解析引擎如何解析XML文档内容. 以下为例: 进入主题了 首先要有一个xml文件为名字为emplist.xml内容如下 <?xml version="1.0" encoding="UTF-8&quo

java中采用Pull解析器对XML文件进行解析

一.基本介绍 Android中极力推荐xmlpull方式解析xml. xmlpull不仅可用在Android上同样也适用于javase,但在javase环境中需自己获取xmlpull所依赖的类库,kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar. jar包下载网址http://www.xmlpull.org/http://kxml.sourceforge.net/     二.例子 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1