gpt4 book ai didi

java - 如何将 xml 节点重命名为 html 标签

转载 作者:行者123 更新时间:2023-11-30 05:06:27 24 4
gpt4 key购买 nike

假设我有一个 Java 字符串,其中包含如下所示的 xml 数据:

String content = "<abc> Hello <mark> World </mark> </abc>";

现在,我试图将此字符串呈现为网页上的文本,并突出显示/标记单词“World”。标签“abc”可以动态更改,那么有没有办法可以使用 Java 重命名字符串中最外层的 xml 标签?

我想将上面的字符串转换为如下所示的格式:

String content = "<i> Hello <mark> World </mark> </i>";

现在,我可以使用新的字符串来设置 html 内容并以斜体显示文本并突出显示单词 World。

谢谢,索尼

PS:我正在对 BaseX xml 数据库中的文件使用 xquery。字符串内容本质上是使用 ft:extract() 的 xquery 的结果,ft:extract() 是一个提取全文搜索结果的函数。

最佳答案

使用正则表达式“解析”XML 可能很麻烦。如果您的 XML 字符串可能比示例中使用的字符串更复杂,您应该考虑将其作为真正的 XML 节点处理。

String newName = "i";
// parse String as DOM
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(new StringReader(content)));

// modify DOM
doc.renameNode(doc.getDocumentElement(), null, newName);

此代码假设需要重命名的元素始终是最外层元素,即根元素。

现在文档是一个 DOM 树。可以使用转换器将其转换回 String 对象。

// output DOM as String
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StringWriter sw = new StringWriter();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(new DOMSource(doc), new StreamResult(sw));
String italicsContent = sw.toString();

关于java - 如何将 xml 节点重命名为 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4953518/

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