如何正确使用Jsoup解析xml文档

一直以来解析xml都是直接使用解析html的方式Jsoup.parse(html).select(“xxx”);去解析。然后上午一个同事也是用这种方式是去解析却取不到需要的元素,原xml文档:

<ApplyTokenResult>
    <ApplyFlag>Y</ApplyFlag>
    <ApplyedToken>
        <AuthResponse>
            <AuthResponseHead>
                <AuthVersion>1.1.0.0</AuthVersion>
            </AuthResponseHead>
            <AuthResponseBody>
                <AuthToken>

                    <Head>
                        <ResultType>Y</ResultType>
                    </Head>

                    <Body>
                        <AuthName>CBANK_FINANCIAL</AuthName>
                        <AuthFlag>0</AuthFlag>
                        <AuthErrorCode>0</AuthErrorCode>
                        <AuthMessage></AuthMessage>
                        <LoginURL>/CmbBank_Financial/UI/FinancialPC/Login/Login.aspx</LoginURL>
                    </Body>
                </AuthToken>
            </AuthResponseBody>
        </AuthResponse>
    </ApplyedToken>
</ApplyTokenResult>

同事需要取到<AuthToken>标签内的所有内容去分析,然后我尝试拿Jsoup去解析了一下<Head>确实取不到,怀疑是Jsoup自动过滤了非html标签,于是问了一波谷歌,结果发现2012年就有人在Jsoup的Github提了issue,作者针对这个问题在Jsoup的1.6.2版本正式处理了这个问题,而且stackoverflow也有相同的questions出现。

Github关于Jsoup解析xml的issue:https://github.com/jhy/jsoup/issues/279

Stackoverflow关于Jsoup解析xml的questions:https://stackoverflow.com/questions/9886531/how-to-parse-xml-with-jsoup

现将使用Jsoup解析xml的代码总结如下:

String xml = "" +
        "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" +
        "<url>www.kagura.me</url>";
Document doc = Jsoup.parse(xml, "", Parser.xmlParser());//然后就可以用正常操作html的方式去用了
System.err.println(doc.select("url"));

未经允许不得转载:鹞之神乐 » 如何正确使用Jsoup解析xml文档

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏