2012-09-26 250 views
1

我有一個保存在字符串中的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

XML解析器怎麼樣? – sp00m

+0

@ sp00m我對不起隊友,我對這件事情沒有預先的知識。我不完全知道XML解析器是什麼。 – Spaniard89

回答

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

我希望我的問題得到解答。 你也可以在一行中完成。

+0

我有問題,插入''因爲它已經在表達式中有「」,並且我必須在indexOf術語,並且出現錯誤。 – Spaniard89

+0

你必須逃避你的「在字符串裏面改變它」 –

+0

非常感謝。這種方式非常快速且有幫助。 – Spaniard89

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)返回字符串需要的話,你可以把它分配給另一個變量並使用該變量等。

+0

我該怎麼做?我對此沒有任何瞭解。任何幫助將非常感激。 – Spaniard89

+0

@Kishorepandey我在我的文章中包含了一段代碼,我希望它有幫助。如果是這樣,請upvote並接受:)謝謝。 – Juvanis

+0

哪裏會是我的輸入字符串? – Spaniard89