我使用以下xml和代码在Java中运行XPath:
<?xml version="1.0" encoding="UTF-8"?>
<list>
<member name="James">
<friendlist>
<friend>0001</friend>
<friend>0002</friend>
<friend>0003</friend>
</friendlist>
</member>
<member name="Jamie">
<friendlist>
<friend>0003</friend>
<friend>0002</friend>
<friend>0001</friend>
</friendlist>
</member>
<member name="Katie">
<friendlist>
<friend>0001</friend>
<friend>0003</friend>
<friend>0004</friend>
</friendlist>
</member>
</list>
Run Code Online (Sandbox Code Playgroud)
码:
try {
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression pathExpr = xpath.compile("/list/member/friendlist/friend[.='0003']");
} catch (XPathExpressionException e) {
Run Code Online (Sandbox Code Playgroud)
当然之后有更多的代码,但是我没有在这里粘贴,因为它认为它可能会更加混乱.
但我的想法是希望从所有成员的friendlist节点中选择具有ID 0003的所有朋友节点,然后将其从XML文件中删除.XPath通过选择值为0003的所有"朋友"节点来工作.我知道我可以使用XML Document对象的removeChild()方法.但问题是我如何直接删除所有这些,而不从其父级开始循环层?removeChild()方法需要我知道其父级的父级父级.
谢谢!
更新:这是我使用XPath的方式:
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression pathExpr = null;
try {
pathExpr = xpath.compile("/list/member/friendlist/friend[.='0003']");
} catch (XPathExpressionException e) {
e.printStackTrace();
}
NodeList list = null;
try {
list = (NodeList) pathExpr.evaluate(xmlDoc, XPathConstants.NODESET);
} catch (XPathExpressionException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
xmlDoc是一个XML文档对象,它解析了XML文件.XML工作正常.只有XML不返回引用而是返回一个全新的节点列表,这使我无法返回其原始的xml文档进行修改.
jta*_*orn 10
对于返回的NodeList中的每个节点:
n.getParentNode().removeChild(n);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12304 次 |
最近记录: |