我有这个XML文件,我需要从"mono“元素提取HTML代码,但我需要html标签。我需要使用groovy编程语言。
"mono“元素中的所有div都是HTML标记,包括div
提前谢谢你。
<dataset>
<chapters>
<chapter id="700" name="Immunology">
<title>Immunology</title>
<monos>
<mono id="382727">
<div>
<h1>blah blah</h1>
</div>
<div>
<p>blah blah</p>
</div>
</mono>
</monos>
</chapter>
<chapter id="701" name="hematology">
<title>Inmuno Hematology</title>
<monos>
<mono id="blah blah">
<div>
<h1>blah blah</h1>
</div>
<div>
<div class="class1">blah blah</div>
</div>
</mono>
</monos>
</chapter>
</chapters>
</dataset>我试过了:
import javax.xml.parsers.*;
xml = new XmlParser().parse("languages.xml")
println("There are " +xml.chapters.chapter.size() +" Chapters")
for (int i = 0; i < xml.chapters.chapter.size(); i++) {
def chapter = xml.chapters.chapter[i]
def chapterName = chapter.'@name'
println chapterName
println("---- Monos List ----\n\n")
for (int j = 0; j < chapter.monos.mono.size(); j++) {
def mono = chapter.monos.mono[j]
println("Mono Content: " + mono.toString());
}
println("---- End Monos List ----\n\n")
}但我只得到了以下输出:
有2章免疫学- Monos列表
单声道内容: mono[attributes={id=382727};value=[div[attributes={};value=[h1[attributes={};value=blah blah],div[attributes={};value=[p[attributes={};value=blah blah]- End Monos List
血液学- Monos列表
单声道内容: mono[attributes={id=blah blah};value=[div[attributes={};value=[h1[attributes={};value=blah blah],div[attributes={};value=[div[attributes={class=class1};value=blah blah]- End Monos List
发布于 2012-05-01 01:57:39
import groovy.xml.*
def src="""
<dataset>
<chapters>
<chapter id="700" name="Immunology">
<title>Immunology</title>
<monos>
<mono id="382727">
<div>
<h1>blah blah</h1>
</div>
<div>
<p>blah blah</p>
</div>
</mono>
</monos>
</chapter>
<chapter id="701" name="hematology">
<title>Inmuno Hematology</title>
<monos>
<mono id="blah blah">
<div>
<h1>blah blah</h1>
</div>
<div>
<div class="class1">blah blah</div>
</div>
</mono>
</monos>
</chapter>
</chapters>
</dataset>
"""
def parsed=new XmlSlurper().parseText(src)
parsed.'**'.findAll{it.name()=='mono'}.each{mono->
mono.children().each {htmlElement->
println new StreamingMarkupBuilder().bind{out << htmlElement}.toString()
}
}发布于 2012-05-01 01:44:43
您可以使用XmlSlurper或XmlParser来解析xml内容。
http://groovy.codehaus.org/Reading+XML+using+Groovy's+XmlSlurper http://groovy.codehaus.org/Reading+XML+using+Groovy's+XmlParser
import groovy.xml.*
def RECORDS = '''
<dataset>
<chapters>
<chapter id="700" name="Immunology">
<title>Immunology</title>
<monos>
<mono id="382727">
<div>
<h1>blah blah</h1>
</div>
<div>
<p>blah blah</p>
</div>
</mono>
</monos>
</chapter>
<chapter id="701" name="hematology">
<title>Inmuno Hematology</title>
<monos>
<mono id="blah blah">
<div>
<h1>blah blah</h1>
</div>
<div>
<div class="class1">blah blah</div>
</div>
</mono>
</monos>
</chapter>
</chapters>
</dataset>
'''
def records = new XmlSlurper().parseText(RECORDS)
def monos = records.depthFirst().findAll{ it.name().equals('mono') }
assert monos[0].toString() == "blah blahblah blah";
XmlUtil.serialize( monos[0] );输出:
<?xml version="1.0" encoding="UTF-8"?><mono id="382727">
<div>
<h1>blah blah</h1>
</div>
<div>
<p>blah blah</p>
</div>
</mono>https://stackoverflow.com/questions/10387407
复制相似问题