1

String に保存した xml ドキュメントがあります。文字列は次のようなものです。

<?xml version=\"1.0\" encoding=\"http://schemas.xmlsoap.org/soap/envelope/\" standalone=\"no\"?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"><soapenv:Header xmlns:wsa=\"http://www.w3.org/2005/08/addressing\"><axis2:ServiceGroupId xmlns:axis2=\"http://ws.apache.org/namespaces/axis2\" wsa:IsReferenceParameter=\"true\">urn:uuid:2BC5F552AF3179755C1348038695049</axis2:ServiceGroupId><wsa:To>http://localhost:8081/axis2/services/TCAQSRBase</wsa:To><wsa:MessageID>urn:uuid:599362E68F35A38AFA1348038695733</wsa:MessageID><wsa:Action>http://www.transcat-plm.com/TCAQSRBase/TCAQSR_BAS_ServerGetOsVariable</wsa:Action></soapenv:Header><soapenv:Body><ns1:TCAQSR_BAS_ServerGetOsVariableInput xmlns:ns1=\"http://www.transcat-plm.com/TCAQSRBase/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"ns1:TCAQSR_BAS_ServerGetOsVariableInputType\"><ns1:TCAQSR_BAS_BaseServerGetInputKey>USERNAME</ns1:TCAQSR_BAS_BaseServerGetInputKey></ns1:TCAQSR_BAS_ServerGetOsVariableInput></soapenv:Body></soapenv:Envelope>

文字列でどのように表現されるかわかりません。

<axis2:ServiceGroupId xmlns:axis2="http://ws.apache.org/namespaces/axis2">しかし、との間の用語を抽出したいと思い</axis2:ServiceGroupId> ます urn:uuid: であり、結果を文字列に保存したいと思います。xpath は知っていますが、私の場合、xpath を使用できません。

そして、本当に助けていただければ幸いです。

よろしくお願いします。

4

2 に答える 2

2
int startPos = xmlString.indexOf("<axis2...>") + "<axis2...>".length();
int endPos = xmlString.indexOf("</value2...>");
String term = xmlString.substring(startPos,endPos);

あなたの質問が正しいことを願っています。1行でもできます。

于 2012-09-26T11:18:44.893 に答える
1

正規表現を使用します。XML文字列全体を奇妙な正規表現で解析すると <axis2:ServiceGroupId xmlns:axis2="http://ws.apache.org/namespaces/axis2">(.+?) </axis2:ServiceGroupId>、特定の問題が解決する可能性があります。

あなたの特定の問題のために私が書いた便利なスニペット:

    String yourInput = "<wsa:ReferenceParameters><axis2:ServiceGroupId xmlns:axis2=\"http://ws.apache.org/namespaces/axis2\">urn:uuid:2BC5F552AF3179755C1348038695049</axis2:ServiceGroupId></wsa:ReferenceParameters>";
    Pattern pattern = Pattern
            .compile("<axis2:ServiceGroupId xmlns:axis2=\"http://ws.apache.org/namespaces/axis2\">(.+?)</axis2:ServiceGroupId>");
    Matcher matcher = pattern
            .matcher(yourInput);
    matcher.find();
    System.out.println(matcher.group(1));

matcher.group(1)は必要な文字列を返します。それを別の変数に割り当てて、その変数などを使用できます。

于 2012-09-26T11:13:42.567 に答える