2010-03-26 234 views
0

我有這個奇怪的XML解析問題。XML解析問題

我有這樣的XML字符串我試圖

<?xml version="1.0"?> 
<response status="success"> 
<lot>32342</lot> 
</response> 

我使用XPath與Java爲了做到這一點來分析。我使用Xpath表達式「/ response/@ status」來查找文本「success」。然而每當我評估這個表達式時,我會得到一個空字符串

但是我能夠成功地解析使用「/響應/ @型」

<?xml version="1.0"?> 
<response type="success"> 
<lot>32342</lot> 
</response> 

那麼,爲什麼會簡單地改變屬性的名稱改變返回字符串沒有這個字符串?

is = new InputSource(new StringReader(testWOcreateStrGood)); 
xPathexpressionSuccess = xPath.compile("/response/@status"); 
responseStr = xPathexpressionSuccess.evaluate(is); 

reponseStr是我前面的「狀態」屬性張貼串

而且我宣佈testWOcreateStrGood如下

private String testWOcreateStrGood = "<?xml version=\"1.0\"?>\n" + 
          "<response status=\"success\">\n" + 
          "<lot>32342</lot>\n" + 
          "</response>"; 
+1

你可以發佈一些快速和髒的示例代碼?這可能是你正在使用的代碼的問題:) – 2010-03-26 17:16:28

+0

我添加了添加 – Albinoswordfish 2010-03-26 17:26:11

回答

1

那麼,爲什麼會簡單地改變屬性的名稱改變返回字符串到什麼?

它不應該。你一定在做其他的事情,比如說訪問錯誤的XML文檔或實際上不使用您認爲正在使用的XPath表達式。


爲了您的代碼示例:

檢查InputSource的API文檔。您不能將XML文檔作爲字符串直接傳遞給構造函數。

+0

作爲一個補充,快速清理/重新編譯將是一個好主意,並檢查路徑 - 也許將xml轉儲到System.out或登錄? – aperkins 2010-03-26 17:20:11

+0

對不起,我沒有正確複製我的代碼,我已經更新了它 – Albinoswordfish 2010-03-26 17:52:49

+0

現在,在您的代碼中,您使用XPath訪問具有「type」屬性的XML文檔的「status」屬性。這當然不起作用。如果你沒有創造這樣的混亂,甚至無法提出一個簡單的問題,那麼幫助你並不容易。 – jarnbjo 2010-03-26 17:58:05