У меня есть этот 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: узел используется в другом документе, чем тот, который его создал ».
Правильно ли указан ваш XML? Потому что, когда я открываю его в FireBug, я вижу, что каждый следующий узел является дочерним элементом предыдущего. Я также вижу слэш '/' в конце каждого тега, но он, похоже, не работает. Когда я явно добавляю тег после каждого , XML встроен в правильную иерархию. –
Я отправлю ответ на основе vtd-xml –