2013-03-06 212 views
0

在DOM4J和XML如何將節點添加到現有的節點?添加節點到節點XML dom4j的

如果我效仿其很容易和偉大工程,如果我有一個元素了。

Element root = doc.getRootElement(); 
Element someElement = root.addElement("some"); 
Element anotherElement = someElement.addElement("another"); 

等等。如果我有一個Element對象,很容易。

但一旦我失去了參考或正在加載XML,而不是創建一個從頭開始我只是不能換我的頭周圍我如何添加一個節點/元素正是我想要的。

所以具體問題是:給定一個文檔,並在其中一個特定的元素,如何添加一個元素在它之下?我是否必須遍歷整個文檔? Xpath我只能返回沒有.addElement的節點,我不能將它變成一個元素。我只是難住,除了添加ID =?對於每一個節點,我都無法弄清楚如何將某些東西放在我想要的地方。任何幫助或方向將不勝感激。

回答

2

您可以遍歷並檢查所需的節點和新創建的節點添加到它,也可以使用與XPath表達式來獲取特定的節點,然後添加新節點到它。

迭代:

public void iterateNodes() { 
    SAXReader reader = new SAXReader(); 
    Document document = reader.read("yourxml.xml"); 
    Element root = document.getRootElement(); 
    for (Iterator i = root.elementIterator(); i.hasNext();){ 
      Element row = (Element) i.next(); 
      Iterator itr = row.elementIterator(); 
      while(itr.hasNext()) { 
       Element child = (Element) itr.next(); 
       String name = child.getQualifiedName(); 
       if(name.equals("requiredName") { 
        //create node and add it to child. 
       } 
      } 
    } 
} 

的XPath:

public void addNodeUsingXpath() { 
    SAXReader reader = new SAXReader(); 
    Document document = reader.read("yourxml.xml"); 
     String xpathExpression = "yourxpath"; 
     List<Node> nodes = document.selectNodes(xpathExpression); 
     // nodes will have all the child nodes under your Xpath. 
     for (Node node : nodes) { 
      //get the required node and add your new node to specific node. 
      if(node instanceof Element) { 
       Element e = (Element) node; 
       e.addElement("newElement"); 
       .... 
      } 
     } 
} 
+0

如何在添加節點的循環?節點。??? Theres沒有方法添加一個。 – user1681732 2013-03-06 01:54:59

+0

節點可以鑄造的元件,看我更新的帖子。 – 2013-03-06 02:04:58

+0

非常感謝。 – user1681732 2013-03-06 02:07:16