2013-12-22 11 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).

Смежные вопросы