我正在尋找用CDATA塊替換轉義的XML部分,主要是爲了提高XML的可讀性,不幸的是必須由人讀取。將轉義的XML文本轉換爲CDATA部分
// Input
def xml = '''
<search>
<search-query>
<nested/<
<xml/<
</search-query>
</search>
'''
def search = new XmlParser().parseText(xml)
def query = search."search-query"
query.replaceNode() {
"search-query"() {
// TODO how can I add a CDATA section here?
//yieldUnescaped("<![CDATA[${query.text()}]]>")
}
}
new XmlNodePrinter(preserveWhitespace:true).print(search)
// Expected
'''
<search>
<search-query>
<![CDATA[<nested/>
<xml/>]]>
</search-query>
</search>
'''
- 性能並不重要
- 我希望能夠使用CDATA只有某些元素
適合工作的工具,我需要保留空白,其Groovy的選擇似乎並沒有這樣做。 使用xmlstarlet完成轉換: '$ xmlstarlet tr cdata.xsl input.xml> output.xml' – 2012-09-25 03:28:27