Deepali Singh
Deepali Singh

Reputation: 55

Removing XML node using Java

I want to remove XML node from XML based on jQuery result. I have XML like this:

<?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>

I want to remove complete <member> tag whose name is equal to 'james' so that XML should look like this

<?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>

I am using following code to get node and delete it but getting same XML as an output. It is not deleting XML node instead giving same XML.

So, how to use xQuery and remove XML node from XML?

Upvotes: 0

Views: 119

Answers (1)

Cfx
Cfx

Reputation: 2312

I do things like this with 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");
    }
}

Not sure if reading the XML from a file meets your setup. But there are several ways to create projections (from IOStream, Resources, DOM Nodes, Strings...)

Upvotes: 1

Related Questions