gpt4 book ai didi

Java:使用 DOM 和 unescapeHtml4() 生成 XML

转载 作者:行者123 更新时间:2023-12-01 15:05:38 27 4
gpt4 key购买 nike

我有一个源文本文件,其中包含一堆正则表达式。我正在读取文本文件,将正则表达式匹配分配给数组索引,并使用 DOM 创建 XML。

但是,我需要将一些样板信息添加到生成的 XML 文档中。我只想使用 element.setTextContent(someBoilerPlateXML) 将 XML 样板信息放入 XML DOM 元素之一,而不是创建数百个新的、复杂的嵌套 DOM 元素。

我正在尝试 org.apache.commons.lang3.StringEscapeUtils.unescapeHtml4 来执行此操作。它似乎适用于我的 System.out.println(someBoilerPlateXML) 测试,但不适用于 element.setTextContent(someBoilerPlateXML) 实现。

例如:

输入: String test = org.apache.commons.lang3.StringEscapeUtils.unescapeHtml4("<Hello id=\"id\"/>");
System.out.println(test);

输出: <Hello id="id"/>

输入:Element element= doc.createElement("element");<br/>
element.setTextContent(org.apache.commons.lang3.StringEscapeUtils.unescapeHtml4("<Hello id=\"id\">"));

结果 XML 文件中的输出: &lt;Hello id="id"/&gt

为什么会这样做,我该如何纠正?我需要使用另一个免费软件包吗?

最佳答案

正如您所发现的,

element.setTextContent 将转义您提供的文本,而不是将其识别为 xml 并进行处理。

如果您想要将 xml 的文本表示形式添加为 xml,则需要将其作为 xml 进行处理,这意味着将其解析为 DOM Node,然后将其附加到那种形式。

如果您的文本不是完整的 xml,则此方法将不起作用。在您的示例中,您只有一个开始标记,无法将其解析为创建 Node

但是,如果它已完成并且您发现更容易生成文本,则可以执行以下操作:

    DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

Document doc = documentBuilder.newDocument();
Element element= doc.createElement("element");
doc.appendChild(element);

Document newDoc = documentBuilder.parse(new InputSource(new StringReader("<Hello id=\"id\"/>")));

Element newElement = newDoc.getDocumentElement();
Node node = doc.importNode(newElement, true);

element.appendChild(node);

关于Java:使用 DOM 和 unescapeHtml4() 生成 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12991713/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com