在下面的示例XML中,如果E = 13,则如何使用java解析器删除整个B节点。
<xml>
<A>
<B>
<C>
<E>11</E>
<F>12</F>
</C>
</B>
<B>
<C>
<E>13</E>
<F>14</F>
</C>
</B>
</A>
请指教。
替代DOM方法
另外,您可以使用JDK中的XPath功能来查找值“ 13”的“ B”元素,然后从其父级中删除它,而不是对XML文档进行蛮力遍历:
import java.io.File;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.*;
import org.w3c.dom.*;
public class Demo {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document document = dbf.newDocumentBuilder().parse(new File("input.xml"));
XPathFactory xpf = XPathFactory.newInstance();
XPath xpath = xpf.newXPath();
XPathExpression expression = xpath.compile("//A/B[C/E/text()=13]");
Node b13Node = (Node) expression.evaluate(document, XPathConstants.NODE);
b13Node.getParentNode().removeChild(b13Node);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
t.transform(new DOMSource(document), new StreamResult(System.out));
}
}
使用XPath的优点是易于维护,如果结构更改,则只需对代码进行一行更改。同样,如果文档的深度增加,基于XPath的解决方案将保持相同的行数。
非DOM方法
如果您不想将您的XML实现为DOM。您可以使用Transformer和样式表删除节点:
问题内容: 在编辑xml时,java的dom如何删除doctype? 得到了这个xml文件: 我的功能很基本: 它正在工作,但是文档类型被删除了!我只得到了整个文档,却没有doctype部分,这对我来说很重要,因为它允许我按id进行检索!我们如何保留doctype?为什么会擦除它?我用outputkeys或omImpl.createDocumentType尝试了许多解决方案,但这些都不起作用… 谢
问题内容: 它很好用,但是我希望它返回一个包含所有字符串的数组,而不是最后一个元素返回一个字符串。 任何想法如何做到这一点? 问题答案: 因此,你想构建一个XML解析器来解析这样的RSS feed。 现在,你可以使用两个SAX实现。你可以使用org.xml.sax或android.sax实现。在发布简短的示例后,我将解释两者的优点和缺点。 android.sax Implementation 让我
问题内容: 它很好用,但是我希望它返回一个包含所有字符串的数组,而不是最后一个元素返回一个字符串。 任何想法如何做到这一点? 问题答案: 因此,你想构建一个XML解析器来解析这样的RSS feed。 现在,你可以使用两个SAX实现。你可以使用org.xml.sax或android.sax实现。在发布简短的示例后,我将解释两者的优点和缺点。 android.sax实现 让我们从实现开始。 你首先必须
在本章中,我们将学习XML DOM删除节点的操作。删除节点操作是指从文档中删除指定的节点。实现此操作以移除诸如文本节点,元素节点或属性节点之类的节点。 以下是用于删除节点操作的方法 - 方法 方法 1. removeChild()方法 方法从子列表中删除指示的子节点,并将其返回。 删除子节点等同于删除文本节点。 因此,删除子节点会删除与其关联的文本节点。 语法 使用方法的语法如下 - 其中, -
主要内容:什么是 XML 解析器?XML 解析是指通过 XML 文档来访问或修改数据。 什么是 XML 解析器? XML 解析器 提供了一种访问或修改 XML 文档中数据的方法。Java 提供了多种选项来解析 XML 文档。以下是常用于解析 XML 文档的各种类型的解析器。 Dom解析器: 通过加载文档的完整内容并在内存中创建其完整的层次树来解析 XML 文档。 SAX解析器: 在基于事件的触发器上解析 XML 文档。不将完整的文
问题内容: 我有下面的xml: Ι要解析此xml文件并从 ListofDocs 获取 主题ID 和 百分比 __ 第一种方法是从xml获取所有文档元素,然后检查祖父节点是否为ListofDocs。但是元素文档存在于 rankDocs 和 listOfDocs中 ,因此我有一个很大的列表。 所以我想知道是否存在更好的解决方案来解析此xml以避免if语句? 我的代码: 问题答案: 首先,在检查节点名称