2012-07-13 56 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字符串