【问题标题】:How to convert a string to a xml in java?如何在java中将字符串转换为xml?
【发布时间】:2012-07-13 00:20:00
【问题描述】:

我有一个字符串对象“hello world” 我需要从这个字符串创建一个 xml 文件,其中 hello world 作为文本内容。 我尝试了以下代码sn-p

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();   
    }   

这段代码运行良好。但是当我用“Hello world”替换字符串时它不起作用。 任何人都可以帮助我吗? 谢谢

【问题讨论】:

  • 怎么不工作了?你有错误吗?输出错误?
  • [致命错误]:1:1:序言中不允许内容。 org.xml.sax.SAXParseException:prolog 中不允许有内容。在 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 com.metlife.ins.portal.idi.enrollment.gsi.vo.IDIEnrollmentBO.main(IDIEnrollmentBO.java:107) 上的 .createXMLResponse(IDIEnrollmentBO.java:74) 当我更改为 Hello World 或其他时出现此错误普通字符串
  • 尝试使用 String 类的 getBytes() 以字节为单位传递字符串。希望这能奏效..
  • 你要用“hello world”替换哪个字符串?
  • 你的 XML 根节点是什么?您可以将Hello World 作为某个节点的文本内容。

标签: java xml string


【解决方案1】:

这里最简单的解决方案是: 如果它是一个有效的字符串(根据 XML 规范正确),只需使用 FileWriter 将其写入一个新文件并为其提供 .xml 扩展名。 无论如何,如果它不是有效的 XML 字符串,它将不会转换

【讨论】:

    【解决方案2】:

    如果你有String newNode = "&lt;node&gt;Hello World&lt;/node&gt;";

    你可以使用

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

    【讨论】:

      【解决方案3】:

      此错误是因为您试图将 xmlString 解析为有效的 XML 字符串,但事实并非如此。例如,您的代码将使用以下xmlString 运行良好:

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

      【讨论】:

        【解决方案4】:

        您不能将字符串“hello world”转换为 XML,因为它不是有效的 xml 文档。它没有声明,也没有标签。

        上面的代码不会把文本转换成xml对象,它只会把已经是有效xml的字符串写入文件。

        说实话,如果你只是想把它写到一个文件中,xml的东西都是不必要的。

        如果你想要某种“hello world”xml 文件,你需要自己添加声明和一些标签。

        【讨论】:

          猜你喜欢
          • 2021-09-23
          • 1970-01-01
          • 2013-07-06
          • 2011-04-22
          • 1970-01-01
          • 2017-01-29
          • 2015-01-13
          • 2013-04-03
          • 1970-01-01
          相关资源
          最近更新 更多