2014-10-17 156 views
0

我想根據jQuery結果從XML中刪除XML節點。我有這樣的XML:使用Java刪除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> 

我想刪除完整​​標籤,其名稱等於「詹姆斯」,使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

一般方法:將XML反序列化(解析)爲對象,遍歷對象並移除需要的元素,然後連載回XML。有許多庫可以用來做這件事。查找DOM和SAX解析器。 – 2014-10-17 13:19:43

+2

「我正在使用以下代碼[...]」。哪些代碼?我沒有看到任何。 – Seelenvirtuose 2014-10-17 13:30:27

+0

你好,丹廟你可以提供一些鏈接或例子,那麼它會更清楚 – 2014-10-17 13:45:58

回答

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,資源,DOM節點,字符串...)

+0

謝謝大家對他們的建議,所有的建議都以某種方式幫助我獲得了我想要的東西。 – 2014-10-21 06:02:20

+0

@DeepaliSingh:如果這種幫助有幫助,你會考慮接受嗎?爲此,請在其左側找到刻度線,然後單擊它,使其變爲綠色。這標記爲您的問題的答案,並將您的問題標記爲已解決。它還會幫助你的幫手回答一些問題,並鼓勵他們幫助其他人。謝謝。 – halfer 2015-11-28 10:03:21