从xml中提取标记的值,其中xml消息以字符串形式出现

时间:2016-01-10 05:09:45

标签: java xml

我有以下方法......

public void sendmessage( final String messageText) 
{
}

并且参数messageText现在包含xml消息,我需要提取xml标记的值并将其发送到整数变量

在上面的字符串参数messageText中包含一条xml消息,这个标签如下所示

<transferGroupId>206320940</transferGroupId>

现在我要提取此标记的e值并在变量内部进行操作请告知如何实现此目的

下面是完整的xml消息,如下所示..

<?l version="1.0" encoding="UTF-8"?>
    <emml message="emml-transfer-lifecycle">
        <messageHeader>
            <businessDate>2016-01-09</businessDate>
            <eventDateTime timeContextReference="London">2016-01-09T16:55:00.485
            </eventDateTime>
            <system id="ACSDE">
                <systemId>ADS ABLO</systemId>
                <systemClass>ADS</systemClass>
                <systemRole>Reference</systemRole>
            </system>
            <timeContext id="ndon">
                <location>ABLO</location>
            </timeContext>
        </messageHeader>
        <transferEventHeader>
            <transferGroupStatus>Settled</transferGroupStatus>
            <transferGroupIdentifier>
                <transferGroupId>206320940</transferGroupId>
                <systemReference>Ghtr</systemReference>
                <transferGroupClassificationScheme>Primary Identifier
                </transferGroupClassificationScheme>
            </transferGroupIdentifier>
        </transferEventHeader>
    </emml>

我尝试过这种方法,如下所示

String tagname = "transferGroupId";
        String t = getTagValue( messageText,  tagname);

然后进一步调用此方法..

public static String getTagValue(String messageText, String tagname){
    return messageText.split("<"+tagname+">")[1].split("</"+tagname+">")[0];

但是这最终不起作用请告诉我如何克服这个

另一个建议jsoup的事情我也尝试过,如下图所示,但它抛出了Parser类没有任何名为xmlParser的方法的例外。

Document doc = Jsoup.parse(messageText, "", Parser.xmlParser());
            for (Element e : doc.select("transferGroupId")) {
                System.out.println(e.text());
            }

1 个答案:

答案 0 :(得分:1)

JSoup 听起来像你需要的。 (它有xml解析支持)

在JSoup中:

Document doc = Jsoup.parse(messageText, "", Parser.xmlParser());
for (Element e : doc.select("transferGroupId")) {
    System.out.println(e.text());
}

这将打印出transferGroupId的文本,在这种情况下为206320940。您可以使用此方法执行其他操作,例如使用您自己的方法和资源发送消息。

希望这有帮助!