2012-07-13 30 views
1

我有一個字符串對象「你好世界」 我需要創建一個xml文件從這個字符串與你好世界作爲文本內容。 我嘗試下面的代碼片段如何在java中將字符串轉換爲xml?

String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"></soap:Envelope>"; 

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 

    DocumentBuilder builder; 
    try 
    { 
     builder = factory.newDocumentBuilder(); 

     // Use String reader 
     Document document = builder.parse(new InputSource( 
       new StringReader(xmlString))); 

     TransformerFactory tranFactory = TransformerFactory.newInstance(); 
     Transformer aTransformer = tranFactory.newTransformer(); 
     Source src = new DOMSource(document); 
     Result dest = new StreamResult(new File("D:\\myXML.xml")); 
     aTransformer.transform(src, dest); 

    } catch (Exception e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

此代碼工作正常。但是當我用「你好世界」替換字符串不工作。 任何人都可以幫助我嗎? 謝謝

+0

它怎麼不工作?你有錯誤嗎?錯誤的輸出? – Keppil 2012-07-13 06:58:04

+0

[致命錯誤]:1:1:在序言中不允許使用內容。 org.xml.sax.SAXParseException:prolog中不允許使用內容。 at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)at com.metlife.ins.portal.idi.enrollment.gsi.vo.IDIEnrollmentBO .createXMLResponse(IDIEnrollmentBO.java:74)at com.metlife.ins.portal.idi.enrollment.gsi.vo.IDIEnrollmentBO.main(IDIEnrollmentBO.java:107)當我更改爲Hello World或其他一些時,出現此錯誤正常字符串 – user1002448 2012-07-13 06:59:04

+0

嘗試通過使用String類的getBytes()傳遞字節的字符串..希望這將工作.. – aProgrammer 2012-07-13 07:01:59

回答

1

此錯誤是因爲您試圖將xmlString解析爲有效的XML字符串,而不是。例如,你的代碼將運行罰款與以下xmlString

String xmlString = "<hi>Hello World</hi>"; 
2

您不能將字符串「hello world」轉換爲XML,因爲它不是有效的xml文檔。它沒有聲明,也沒有標籤。

上面的代碼不會將文本轉換爲xml對象,它只會接受一個已經有效的xml字符串並將其寫入文件。

說實話,如果你只是想把它寫入一個文件,xml的東西都是不必要的。

如果你想要某種「hello world」xml文件,你需要自己添加聲明和一些標籤。

0

如果你有String newNode = "<node>Hello World</node>";

您可以使用

Element node = DocumentBuilderFactory 
    .newInstance() 
    .newDocumentBuilder() 
    .parse(new ByteArrayInputStream(newNode.getBytes())) 
    .getDocumentElement(); 
0

最簡單的解決方案可以在這裏是: 如果它是一個有效的字符串(根據XML規範正確)只需使用FileWriter將其寫入新文件併爲其擴展.xml。 無論如何,它不會轉換,如果它不是一個有效的XML字符串