我有以下.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="1">
<name>Book-1</name>
<author>Author-1</author>
</book>
</bookstore>
问题是我想删除id="1"
的图书。我想要删除书籍节点的方式,以便自动删除其所有子节点。有办法吗?
答案 0 :(得分:1)
您可以使用XSLT
脚本:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="book[@id='1']"/>
</xsl:stylesheet>
基本上,人们所做的就是在没有与模式"book[@id='1']"
XSLT当然会引入一些开销,但优点是:
使用DOM解析器(不指定整个文件,我希望您熟悉DOM):
NodeList nList = doc.getElementsByTagName("book");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
if(eElement.getAttribute("id").equals("1")) {
doc.removeChild(eElement);
}
}
}
答案 1 :(得分:0)
还有另一种简单的解决方案可以解析XML文件。浏览Xstream
的文档