2013-12-22 92 views
0

我有這樣的XML:拆分XML節點

<Forms> 
<Form ID="230688" TemplateID="1111" DocType="1"> 
    <Field name="topmostSubform[0].Page1[0].Street[0]" value="street" /> 
    <Field name="topmostSubform[0].Page1[0].HouseNo[0]" value="18" /> 
</Form> 
<Form ID="230645" TemplateID="5444" DocType="8"> 
    <Field name="topmostSubform[0].Page1[0].city[0]" value="city_name" /> 
    <Field name="topmostSubform[0].Page1[0].number[0]" value="345354" /> 
</Form> 
<Form ID="230690" TemplateID="1123" DocType="8"> 
    <Field name="topmostSubform[0].Page1[0].group[0]" value="group" /> 
    <Field name="topmostSubform[0].Page1[0].phone[0]" value="phone" /> 
</Form> 

我要產生4 XML的其中他們每個人由一個單一形式的節點。

即農產品(每個表格節點):

<Forms> 
<Form ID="230688" TemplateID="1111" DocType="1"> 
    <Field name="topmostSubform[0].Page1[0].Street[0]" value="street" /> 
    <Field name="topmostSubform[0].Page1[0].HouseNo[0]" value="18" /> 
</Form> 
</Forms> 

我嘗試:

NodeList nodeList = (NodeList) xpath.evaluate("//Forms//Form", parser.doc,XPathConstants.NODESET); 
for(int i=0; i<nodeList.getLength(); i++) 
      { 
       Document outputDoc = _docBuilder.newDocument(); 
       Element rootElement = outputDoc.createElement("Forms"); 
       Node childNode = nodeList.item(i); 
       rootElement.appendChild(childNode); 
       outputDoc.appendChild(rootElement); ..... 

但是,這給出了一個異常:「WRONG_DOCUMENT_ERR:一個節點在不同的文檔比用於創造它的人。「

+0

你的XML是否正確?因爲當我在FireBug中打開它時,我發現每個下一個節點都是前一個節點的子節點。我還在每個標記的結尾處看到斜槓'/',但似乎不起作用。當我在每個之後明確添加一個標記時,XML就被構建到正確的層次結構中。 –

+0

我會根據vtd-xml提交答案 –

回答

0

你想用Document.importNode()

導入一個節點從另一個文檔到這個文件,而不改變或移除原始文檔中的源節點;此方法將創建源節點的新副本。返回的節點沒有父節點; (parentNode爲null)。