java删除xml文件节点??
现有文件<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?><!--editedwithXMLSpyv4.4U(htt...
现有文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by a (a) -->
<contacts>
<contact 编号="200720" 性别="男">
<姓名>张隆</姓名>
<QQ>356213186</QQ>
</contact>
<contact 编号="200719" 性别="男">
<姓名>于德洋</姓名>
<QQ>865212175</QQ>
</contact>
<contact 编号="200704" 性别="女">
<姓名>韩晓洁</姓名>
<QQ>526478190</QQ>
</contact>
<contact 编号="200703" 性别="女">
<姓名>龚晚晚</姓名>
<QQ>92144633</QQ>
</contact>
</contacts>
然后我想要通过java程序删除contact 节点中的<QQ>一栏,就好像在数据库中删除一个字段的意思,请问各位大侠??
要实现如上功能,怎样写语句呢???
呵呵!!以上问题小弟解决了..........
但是又碰到一个问题:
怎么一次性把所有节点都删掉呢?????? 展开
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by a (a) -->
<contacts>
<contact 编号="200720" 性别="男">
<姓名>张隆</姓名>
<QQ>356213186</QQ>
</contact>
<contact 编号="200719" 性别="男">
<姓名>于德洋</姓名>
<QQ>865212175</QQ>
</contact>
<contact 编号="200704" 性别="女">
<姓名>韩晓洁</姓名>
<QQ>526478190</QQ>
</contact>
<contact 编号="200703" 性别="女">
<姓名>龚晚晚</姓名>
<QQ>92144633</QQ>
</contact>
</contacts>
然后我想要通过java程序删除contact 节点中的<QQ>一栏,就好像在数据库中删除一个字段的意思,请问各位大侠??
要实现如上功能,怎样写语句呢???
呵呵!!以上问题小弟解决了..........
但是又碰到一个问题:
怎么一次性把所有节点都删掉呢?????? 展开
2个回答
展开全部
java删除xml文件节点,主要方式是先解析整个xml文件,然后根据节点的编号,进行删除,代码如下:
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();
}
}
/**
* delete xml code //删除某个节点
* @param path
*/
public void delXmlCode(){
try {
builder = factory.newDocumentBuilder(); //拿到树节点
doc=builder.parse(path);
doc.normalize();
NodeList imags =doc.getElementsByTagName("imags"); //拿到某个节点的ID,接着进行删除
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();
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |