JDOM 如何修改XML文档中的CDATA段数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDOM 如何修改XML文档中的CDATA段数据相关的知识,希望对你有一定的参考价值。

JDOM 如何修改XML文档中的CDATA段数据 ,修改后又如何存档?请高手指点!

参考技术A 我也在找答应

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

【中文标题】如何将具有 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 格式的字符串 实际上,我粘贴的代码似乎也可以正常工作。我的代码中的其他地方有问题。但感谢您对此进行调查。而且您提供了不同的方法来做同样的事情。希望这种方法对任何人都有帮助。

以上是关于JDOM 如何修改XML文档中的CDATA段数据的主要内容,如果未能解决你的问题,请参考以下文章

XML CDATA

雷林鹏分享: XML CDATA

XML 特殊字符处理和 CDATA

<!CDATA[]]用法详解

XML CDATA的作用

2018.7.22 Jdom与dom的区别