如何将具有 XML 格式内容的字符串转换为 JDom 文档

Posted

技术标签:

【中文标题】如何将具有 XML 格式内容的字符串转换为 JDom 文档【英文标题】:How to convert String having contents in XML format into JDom document 【发布时间】:2013-02-19 14:23:42 【问题描述】:

我正在尝试使用以下代码:

String docString = txtEditor.getDocumentProvider().getDocument(
txtEditor.getEditorInput()).get();

SAXBuilder sb= new SAXBuilder();

doc = sb.build(new StringReader(docString));

谁能帮我解决上述问题。 提前致谢!!

【问题讨论】:

【参考方案1】:

这是一个比实际常见问题解答更容易获得答案的常见问题解答:How do I build a document from a String?

所以,我创建了issue #111

对于它的价值,我之前已经针对这种情况改进了错误消息(请参阅the previous issue #63,现在您应该有一个错误消息:

MalformedURLException mx = new MalformedURLException(
    "SAXBuilder.build(String) expects the String to be " +
    "a systemID, but in this instance it appears to be " +
    "actual XML data.");

底线是你应该使用:

Document parseddoc = new SaxBuilder().build(new StringReader(myxmlstring));

罗尔夫

【讨论】:

实际上,我粘贴的代码似乎也可以正常工作。我的代码中的其他地方有问题。但感谢您对此进行调查。【参考方案2】:

这就是您通常将 xml 解析为 Document 的方式

try 
  SAXBuilder builder = new SAXBuilder();
  Document anotherDocument = builder.build(new File("/some/directory/sample.xml"));
 catch(JDOMException e) 
  e.printStackTrace();
 catch(NullPointerException e) 
  e.printStackTrace();

这取自JDOM IBM Reference

如果你有字符串,你可以将它转换为 InputStream 然后传递它

String exampleXML = "<your-xml-string>";
InputStream stream = new ByteArrayInputStream(exampleXML.getBytes("UTF-8"));
Document anotherDocument = builder.build(stream);

对于 builder.build() 支持的各种参数,您可以通过api docs

【讨论】:

感谢您的快速回复。您粘贴的代码可以很好地使用特定路径中可用的文件创建新文档。但就我而言,我需要创建/转换具有 XML 格式内容的字符串到 Document. 是的,代码可以很好地从现有的 .xml 文件创建新文档。但在这里我没有任何 xml 文件。我从其他地方得到这个字符串(它具有 xml 格式的内容)。如您所见,我的代码: String docString = txtEditor.getDocumentProvider().getDocument( txtEditor.getEditorInput()).get(); sry.. 解决了错字问题.. exampleXML 是 xml 格式的字符串 实际上,我粘贴的代码似乎也可以正常工作。我的代码中的其他地方有问题。但感谢您对此进行调查。而且您提供了不同的方法来做同样的事情。希望这种方法对任何人都有帮助。

以上是关于如何将具有 XML 格式内容的字符串转换为 JDom 文档的主要内容,如果未能解决你的问题,请参考以下文章

如何将 XML 转换为具有二进制数据内容的 Json

使用杰克逊将具有重复元素的 XML 转换为 JSON

如何将日期字符串转换为具有不同日期格式的时间戳?

如何将此字符串转换为具有这种格式的日期?

如何将 python 日期时间转换为具有可读格式日期的字符串?

将XML转换为Json(标记为UTF-16但具有UTF-8内容的文档)