2015-07-03 67 views
0

我想我的XML节点:如何获得XML节点角括号中值

<Name><![CDATA[Masonry, Stucco &amp; Brick Paint]]></Name> 

但它得到保存为:

<Name>&lt;![CDATA[Abcd, City &amp; Abcd]]&gt;</Name> 

我使用如下代码:

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
... 
... 
Element name = doc.createElement("Name"); 
name.appendChild(doc.createTextNode("<![CDATA[" + categoryName + "]]>")); 
category.appendChild(name); 

我甚至尝试过使用“amp; lt;”和“amp; gt;”分别<和>,但不工作

+0

请检查答案。 – ozgur

+0

如果是这样,请接受/投票。 – ozgur

回答

0

你可以试试这个...

class StringToDocumentToString { 

    public static void main(String[] args) { 

     final String xmlStr = "<Name><![CDATA[Masonry, Stucco &amp; Brick Paint]]></Name>"; 

     Document doc = convertStringToDocument(xmlStr); //You can directly store this document as .xml but if you want String as return than do next step 
     String str = convertDocumentToString(doc); 
     System.out.println(str); 
    } 

    private static String convertDocumentToString(Document doc) { 
     TransformerFactory tf = TransformerFactory.newInstance(); 
     Transformer transformer; 
     try { 
      transformer = tf.newTransformer(); 
      StringWriter writer = new StringWriter(); 
      transformer.transform(new DOMSource(doc), new StreamResult(writer)); 
      String output = writer.getBuffer().toString(); 
      return output; 
     } catch (TransformerException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    private static Document convertStringToDocument(String xmlStr) { 
     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder; 
     try { 
      builder = factory.newDocumentBuilder(); 
      Document doc = builder.parse(new InputSource(new StringReader(
        xmlStr))); 
      return doc; 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

}