2013-10-29 124 views
6

您好,我正在從web服務獲取字符串。java將字符串轉換爲xml並解析節點

我需要解析這個字符串並獲取錯誤信息中的文本?

我的字符串如下所示:

<response> 
<returnCode>-2</returnCode> 
<error> 
<errorCode>100</errorCode> 
<errorMessage>ERROR HERE!!!</errorMessage> 
</error> 
</response> 

是更好地只解析字符串或轉換爲XML然後解析?

+0

您使用的是REST嗎? –

+0

是................ –

回答

13

我會使用Java的XML文檔庫。這有點亂,但工作。

String xml = "<response>\n" + 
      "<returnCode>-2</returnCode>\n" + 
      "<error>\n" + 
      "<errorCode>100</errorCode>\n" + 
      "<errorMessage>ERROR HERE!!!</errorMessage>\n" + 
      "</error>\n" + 
      "</response>"; 
Document doc = DocumentBuilderFactory.newInstance() 
            .newDocumentBuilder() 
            .parse(new InputSource(new StringReader(xml))); 

NodeList errNodes = doc.getElementsByTagName("error"); 
if (errNodes.getLength() > 0) { 
    Element err = (Element)errNodes.item(0); 
    System.out.println(err.getElementsByTagName("errorMessage") 
          .item(0) 
          .getTextContent()); 
} else { 
     // success 
} 
+0

這對我有用!! ...謝謝 –

+0

它也適用於我。謝謝 – mavi

1

這是一個XML文檔。使用XML解析器。

可能使用字符串操作將它分開。但是你必須擔心實體解碼,字符編碼,CDATA部分等。XML解析器將爲你做所有這些。

檢出JDOM以獲得比使用原始DOM/SAX實現更簡單的XML解析方法。

2

我可能會使用XML解析器使用DOM將其轉換爲XML,然後獲取文本。這具有強大和有任何異常情況的應對,如這樣的行,其中一些已被註釋掉的優勢:

<!-- commented out <errorMessage>ERROR HERE!!!</errorMessage> --> 

如果你試圖自己解析它,那麼你可能會掉下東西犯規這樣的。另外它的優點是,如果需求擴大,那麼它很容易改變你的代碼。

http://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm

相關問題