2013-07-17 33 views
0

我需要一個XML元素及其子元素,將XML轉義並將它們作爲文本節點追加到另一個文檔中。我知道這種方法很愚蠢,但API需要它。將XML元素附加爲文本節點(轉義)

我可以使用Java的許多XML庫之一完成此操作嗎? 我嘗試使用JAXP,但我的代碼不能轉義撇號和雙引號。

… 
    String content = elementToString(nodeToEscape); 
    Text text = document.createTextNode(content); 
    Node n = document.getElementsByTagName("targetNode").item(0); 
    n.appendChild(text); 
} 

String elementToString(Element element) { 
    Document document = element.getOwnerDocument(); 
    DOMImplementationLS domImplLS = (DOMImplementationLS) document.getImplementation(); 
    LSSerializer serializer = domImplLS.createLSSerializer(); 
    return serializer.writeToString(element); 
} 

得到的文檔片段:

<dataItem aggregate="none" name="Order number"… 
+2

你確定你需要轉義引號和撇號嗎?根據:http://www.w3schools.com/xml/xml_syntax.asp只有字符「<」和「&」在XML中嚴格違法。 – gawi

+0

@gawi:你是對的!謹慎發佈它作爲答案? – prasopes

回答

0

dom4j肯定讓你這樣做。我不得不做很類似的事情(儘管很多年前),dom4j是我選擇的工具。 JDOM是一種替代選擇 - 無論哪一個你覺得更直觀。

兩者都比JAXP提供更友好的XML對象模型。