如何在java中将字符串转换为xml?
问题描述:
我有一个字符串对象“你好世界” 我需要创建一个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();
}
此代码工作正常。但是当我用“你好世界”替换字符串不工作。 任何人都可以帮助我吗? 谢谢
答
此错误是因为您试图将xmlString
解析为有效的XML字符串,而不是。例如,你的代码将运行罚款与以下xmlString
:
String xmlString = "<hi>Hello World</hi>";
答
您不能将字符串“hello world”转换为XML,因为它不是有效的xml文档。它没有声明,也没有标签。
上面的代码不会将文本转换为xml对象,它只会接受一个已经有效的xml字符串并将其写入文件。
说实话,如果你只是想把它写入一个文件,xml的东西都是不必要的。
如果你想要某种“hello world”xml文件,你需要自己添加声明和一些标签。
答
如果你有String newNode = "<node>Hello World</node>";
您可以使用
Element node = DocumentBuilderFactory
.newInstance()
.newDocumentBuilder()
.parse(new ByteArrayInputStream(newNode.getBytes()))
.getDocumentElement();
答
最简单的解决方案可以在这里是: 如果它是一个有效的字符串(根据XML规范正确)只需使用FileWriter将其写入新文件并为其扩展.xml。 无论如何,它不会转换,如果它不是一个有效的XML字符串
它怎么不工作?你有错误吗?错误的输出? – Keppil 2012-07-13 06:58:04
[致命错误]: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
尝试通过使用String类的getBytes()传递字节的字符串..希望这将工作.. – aProgrammer 2012-07-13 07:01:59