我想基于jQuery结果从XML中删除XML节点。我有这样的XML:
<?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>
我想删除名称等于'james'的完整<member>
标记,以便XML看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<list>
<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>
我使用以下代码来获取节点并删除它,但获取相同的XML作为输出。它不是删除XML节点而是提供相同的XML。
那么,如何使用xQuery并从XML中删除XML节点?
答案 0 :(得分:1)
我使用XMLBeam执行此类操作:
public class RemoveNode {
public interface Projection {
@XBDelete("/list/member[@name='{0}']")
Projection removeMember(String name);
}
public void main(String[] args) {
Projection projection = new XBProjector(Flags.TO_STRING_RENDERS_XML).io.file("yourfile.xml").read(projection.class);
System.out.println("Before:"+projection);
System.out.println("After:"+projection.removeMember("james");
}
}
不确定从文件中读取XML是否符合您的设置。但是有几种方法可以创建投影(来自IOStream,Resources,DOM Nodes,Strings ......)