gpt4 book ai didi

java - 将 XML 文本节点替换为元素节点

转载 作者:行者123 更新时间:2023-11-30 08:18:56 26 4
gpt4 key购买 nike

我使用的是 groovy,所以 java 实现也可以。

我有

"""<TextFlow fontFamily="Arial" fontSize="20"><span>before</span>Less than 7 days<span>after</span></TextFlow>"""

我想用标签包装第一级文本节点。所以我想得到

"""<TextFlow fontFamily="Arial" fontSize="20"><span>before</span><span>Less than 7 days</span><span>after</span></TextFlow>"""

我研究了 XmlSlurper,它不处理文本节点。我还研究了可以处理文本节点的 XmlParser,但我不确定如何用 xml 元素替换它。请指教。

最佳答案

这对我有用,希望对其他人有帮助

@Grab('org.jdom:jdom2:2.0.5')
@Grab('jaxen:jaxen:1.1.4')
@GrabExclude('jdom:jdom')

import org.jdom2.*
import org.jdom2.input.*
import org.jdom2.xpath.*
import org.jdom2.output.*

def xml = """<TextFlow fontFamily="Arial" fontSize="20"><span>before</span>Less than 7 days<span>after</span></TextFlow>"""

Document doc = new SAXBuilder().build(new StringReader(xml))
def urls = XPathFactory.instance().compile('//TextFlow/text()').evaluate(doc)

for(def c in urls) {
int pos = c.parent.content.indexOf(c)
Element span = new Element("span")
span.text = c.text
c.parent.setContent(pos, span)

}

new XMLOutputter().with {
format = Format.getRawFormat()
format.setLineSeparator(LineSeparator.NONE)
// XmlOutputter can write to OutputStream or Writer, which is sufficient for most cases
output(doc, System.out)
}

关于java - 将 XML 文本节点替换为元素节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29244128/

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