首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用groovy从XML文件中提取HTML代码

如何使用groovy从XML文件中提取HTML代码
EN

Stack Overflow用户
提问于 2012-05-01 00:49:25
回答 2查看 1.8K关注 0票数 0

我有这个XML文件,我需要从"mono“元素提取HTML代码,但我需要html标签。我需要使用groovy编程语言。

"mono“元素中的所有div都是HTML标记,包括div

提前谢谢你。

代码语言:javascript
复制
<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>

我试过了:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-01 01:57:39

代码语言:javascript
复制
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()
    }
}
票数 3
EN

Stack Overflow用户

发布于 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

代码语言:javascript
复制
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] );

输出:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?><mono id="382727">
  <div>
    <h1>blah blah</h1>
  </div>
  <div>
    <p>blah blah</p>
  </div>
</mono>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10387407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档