使用Java删除XML节点

使用Java删除XML节点,java,xml,xquery,Java,Xml,Xquery,我想根据jQuery结果从XML中删除XML节点。我有这样的XML: <?xml version="1.0" encoding="UTF-8"?> <list> <member name="James"> <friendlist> <friend>0001</friend> <friend>0002</friend>

我想根据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>

0001
0002
0003
0003
0002
0001
0001
0003
0004
我想删除名为“james”的complete
标记,这样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>

0003
0002
0001
0001
0003
0004
我使用以下代码获取节点并将其删除,但得到与输出相同的XML。它不是删除XML节点,而是提供相同的XML


那么,如何使用xQuery并从XML中删除XML节点呢?

我使用以下工具执行类似操作:


不确定从文件读取XML是否符合您的设置。但是有几种方法可以创建投影(从IOStream、资源、DOM节点、字符串…)

一般方法:将XML反序列化(解析)为对象,遍历对象并删除需要的元素,然后序列化回XML。可以使用任意数量的库来执行此操作。查找DOM和SAX解析器。“我正在使用以下代码[…]”。哪种代码?我没有看到任何。嗨,Dan Temple,你能提供一些链接或示例吗?那么,你确定你指的是Java,正如你提到的jQuery,它实际上是JavaScript。是的,我确定,因为我正在使用Java解析器解析xml,并使用jQuery提取节点(到达节点)。谢谢大家的建议,所有的建议在某种程度上帮助我得到了我想要的东西。要执行此操作,请找到其左侧的记号标记,然后单击它,使其变为绿色。这会将其标记为您问题的答案,并将您的问题标记为已解决。它也会奖励你的帮助者一点点的回答,从而鼓励他们也帮助其他人。谢谢
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");
    }
}