使用Dom解析器 - 命名空间问题读取xml元素

时间:2013-12-12 22:46:45

标签: java xml dom xpath

我正在调用web服务并接收响应

<ns2:sendGetResponse xmlns:ns2='http://test.com/bt/' xmlns:SOAP-   
ENV='http://schemas.xmlsoap.org/soap/envelope/' 
xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-    instance'><return> 
  [{"Id":30477,"EmailAddress":"truech@abc.com","FirstName":"abc","LastName":"xyz","MiddleNam    e":"H","MaidenName":null,"OtherNames":null,"RaceCode":"A           }]   
</return></ns2:sendGetResponse>        

我需要将标签返回的值作为字符串读取。我尝试使用和不使用xpath的Dom。它们都返回null ..我认为它是由于命名空间问题..请帮忙。

由于

1 个答案:

答案 0 :(得分:0)

对于这样一个简单的xml,我不会打扰DOM。字符串解析就足够了。你可以用不同的方式做到这一点,但这可能是最短的。

String string =
"<ns2:sendGetResponse xmlns:ns2='http://test.com/bt/' xmlns:SOAP-   \r\n" +
"ENV='http://schemas.xmlsoap.org/soap/envelope/' \r\n" +
"xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-    instance'><return> \r\n" +
"  [{\"Id\":30477,\"EmailAddress\":\"truech@abc.com\",\"FirstName\":\"abc\",\"LastName\":\"xyz\",\"MiddleNam    e\":\"H\",\"MaidenName\":null,\"OtherNames\":null,\"RaceCode\":\"A           }]   \r\n" +
"</return></ns2:sendGetResponse>";

System.out.println( string.split("</?return>")[1] );