我有一个我在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:并希望将结果保存在String中。我知道xpath,但在我的情况下,我不能使用xpath。
非常感谢任何帮助。
提前多多感谢。
答案 0 :(得分:2)
int startPos = xmlString.indexOf("<axis2...>") + "<axis2...>".length();
int endPos = xmlString.indexOf("</value2...>");
String term = xmlString.substring(startPos,endPos);
我希望我的问题是正确的。 你也可以在一行中完成。
答案 1 :(得分: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)返回所需的字符串,您可以将其分配给另一个变量并使用该变量等。