2013-02-19 4 views
0

вот моя проблема:Как заменить элемент XML другим (другого документа)?

У меня есть исходный XML-файл, который разобран DOM. Я также получил фрагмент XML (например: <a>text1<b/></a>). «Корневой» элемент фрагмента всегда будет соответствовать элементу (то же имя) в исходной DOM. Могу ли я заменить узел DOM этим?

Во-первых, я думал, состоит в том, чтобы проанализировать фрагмент строки как DOM. Затем я попытался использовать метод replaceChild(), но либо я использовал его неправильно, либо его можно применять только для узлов, которые уже существуют в одной и той же DOM. Так может кто-то показать, как я могу это достичь?

ответ

1

Возможно, вам сначала необходимо вызвать getParentNode(), а затем вызвать replaceChild() для родительского узла, который у вас есть.

+0

Спасибо, вы были правы! Я неправильно понял API и попытался применить метод к корню документа. Теперь работает так, как ожидалось. Кроме того, мне пришлось использовать importNode(), чтобы получить фрагмент из другого документа в нужное. – user2089117

0
//Importing template node to the target document(this solves wrong_DOCUMENT_ERR:) 
Node importedTemplateChildNode = targetDoc.importNode(templateChildNode, true); 

// Replace target child node with the template node 
targetParentNode.replaceChild(importedTemplateChildNode, targetChildnode);  

Transformer tranFac = TransformerFactory.newInstance().newTransformer(); 
tranFac.transform(new DOMSource(targetDoc), new StreamResult(new FileWriter(targetXmlFile))); 

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

  • Нет связанных вопросов^_^