2017-04-25 8 views
0

私はすでにここから助けを得ているので、もう一度試してみてはいかがですか?どんな提案も大歓迎です。JavaのHttpResponse XMLから属性値を抽出する

私はHTTPクライアントを使用しており、POSTリクエストを行っています。応答は、次のようなXML体である:

<?xml version="1.0" encoding="UTF-8"?> 
<invokeResult> 
<method name="RS"> 
<params> 
     <param name="sp" value="" /> 
     <param name="cp" value="" /> 
     <param name="ck" value="" /> 
</params> 
</method> 
<status>OK</status> 
<result> 
    <status>ENDED</status> 
    <reportUrl></reportUrl> 
    <runId></runId> 
    <pass count="0" /> 
    <fail count="1" /> 
    <message>column,report</message> 
    </result> 
</invokeResult>  

今...

私はから<pass count="0" />の値を取得したいと思い

String responseString = EntityUtils.toString(response.getEntity()); 

あるHttpEntityを持っていますjavaコードによるxml応答。いくつかの1つ私plsを助けることができますか?

詳細コードを作成しましたが、nullポインタ例外が発生しました。

DefaultHttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet("REQUEST-URL"); 
     HttpResponse response = client.execute(request); 
     if (response.getStatusLine().getStatusCode() == 200 && response.getEntity() != null) { 
      String responseString = EntityUtils.toString(response.getEntity()); 
      responseString=responseString.replaceAll("<?xml*?>", "").trim(); 
      DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory 
        .newInstance(); 
      DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
      Document doc = docBuilder.parse(new InputSource(new StringReader(
        responseString))); 
      NodeList orderNode = doc.getElementsByTagName("<pass count="); 
      String strOrdNo = orderNode.item(0).getTextContent(); 
      logger.info("pass Value = " + strOrdNo); 

おかげ

+0

NPEはどのラインで入手できますか? –

+0

NPE取得中 NodeList orderNode = doc.getElementsByTagName( "<パスカウント="); 文字列strOrdNo = orderNode.item(0).getTextContent(); – user3175778

+0

タグ名を渡すだけです。 'doc.getElementsByTagName(" pass ")'。下の私の答えをチェックしてください。 –

答えて

0

ますのでご注意くださいpassfailは空のタグ(タグは/>としてクローズ)であり、彼らは任意の値を保持しません。 count属性の値を抽出しようとすると、次のように試すことができます。

NodeList orderNode = doc.getElementsByTagName("pass"); 
String strOrdNo = orderNode .item(0).getAttributes().getNamedItem("count").getNodeValue(); 
logger.info("pass Value = " + strOrdNo); 
+0

素晴らしい。私は今価値を得ました。大変ありがとうございました。 – user3175778

関連する問題