2012-09-17 105 views
0

我想從下面的InputStream獲得「信息搜索結果」值:如何從SOAP響應中獲取單個元素的值? (JAVA)

HTTP/1.1 200 OK 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
    <soap12:Body> 
     <SearchResponse xmlns="[url here]"> 
      <SearchResult>[THIS VALUE HERE]</SearchResult> 
     </SearchResponse> 
     </soap12:Body> 
</soap12:Envelope> 

我一直在嘗試使用DOM解析器但我有麻煩,我不知道這是否是正確的無論如何處理:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db; 
Document doc = null; 

db = factory.newDocumentBuilder(); 
InputSource inStream = new InputSource(); 
inStream.setCharacterStream(new StringReader(soapResponse)); 
doc = db.parse(inStream); 

NodeList nl = doc.getElementsByTagName("SearchResult"); 
//Not sure how to get the value... Everything I've tried returned "null". Help? 

我該怎麼做?

回答

1

對於Java和Android 8級或更高版本: nodeList.item(0).getTextContent()

Android的1級和新: nodeList.item(0).getFirstChild().getNodeValue()

+0

我沒有,因爲這給我的錯誤「呼叫需要API級別8(電流分鐘是7)...「 – Kalina

+1

嗯...適合我,用Java 6.但我看到你已經添加了Android標籤....所以現在你學到了一個艱難的教訓:Android不是Java。 (Android!= Java)。這是你的目標Android版本的問題...你需要與Android 2.1.x兼容嗎? –

+1

更新了一個適用於api級別1的答案android –