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

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

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

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

SAXBuilder sb= new SAXBuilder();

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

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

【问题讨论】:

    标签: java eclipse-plugin sax jdom jdom-2


    【解决方案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 格式的字符串
    • 实际上,我粘贴的代码似乎也可以正常工作。我的代码中的其他地方有问题。但感谢您对此进行调查。而且您提供了不同的方法来做同样的事情。希望这种方法对任何人都有帮助。
    猜你喜欢
    • 2015-02-19
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多