2012-03-16 82 views
1

我正在處理一個xml文檔並從中讀取值。我正在閱讀的其中一個價值在於它。這是值的外觀:M/S John Smith At 4。我正在模擬器上進行一些測試,並顯示正確的值。現在我將我的應用程序部署到我的Samsung Galaxy S2 device,並且該過程沒有正確讀取值。它只是在該名稱的值字段中顯示M.無法讀取設備上的「/」

我想這可能是因爲/是一個特殊字符。有什麼我可以做的,以逃避價值中的特殊字符,並讀取它的全名?

P.S .:我不是一個有經驗的Java開發人員,所以這個問題可能聽起來很愚蠢,但如果你有解決方案,請讓我知道。

當我打印在控制檯窗口中的數值,這是解析它之後它在XMLDOCUMENT如何讀取:M/S John Smith At 4

該函數讀取值:

public static String getCharacterDataFromElement(Element e) { 
     Node child = e.getFirstChild(); 
     if (child instanceof CharacterData) { 
      CharacterData cd = (CharacterData) child; 
      return cd.getData(); 
     } 
     return ""; 
     } 

在adove功能,cd.getdata()返回中號

一些調試後:

當我看到這個元件在監視窗口,F或其他名稱只有一個孩子。但是,對於包含/它有3個孩子的元素。它切割它看到/在那裏的stringbuffer bcz。我想或者我必須改變下面的功能,並準備好所有的孩子節點,或者我必須在那裏使用轉義字符,然後再傳遞它。

+1

這聽起來像一個有趣的問題;你能發佈你寫的只提取「M」的代碼嗎? – mfrankli 2012-03-16 03:58:44

+0

@mfrankli:請參閱編輯。 – Asdfg 2012-03-16 04:04:23

+0

問題是,正如你猜測的那樣,'/'是一個特殊字符。 /指的是'/'的ascii值47。這裏的轉折點在於它在仿真器上工作,但不在設備上,這是令人驚訝的,我沒有很好的答案。至於簡單的工作,你可以嘗試將'child'轉換成CDataSection(http://developer.android.com/reference/org/w3c/dom/CDATASection.html)而不是CharacterData – mfrankli 2012-03-16 04:24:34

回答

0

這是什麼新的方法現在看起來像:

public static String getCharacterDataFromElement(Element e) { 
    return e.getTextContent(); 
    } 

截至目前,這是工作。我不知道多久,但希望,直到我決定做正確的事情,並迭代子節點和連接字符串值。

1

如果我們正在談論一個文本節點,你試過NodegetNodeValue()

public static String getCharacterDataFromElement(Element e) 
{ 
    Node child = e.getFirstChild(); 
    return child.getNodeValue(); 
} 

文檔:http://docs.oracle.com/javase/1.4.2/docs/api/org/w3c/dom/Node.html#getNodeValue%28%29

+0

是的。我試過了。同樣的結果。 Bcz of/sign,該節點有3個孩子。我想逃避/角色,我認爲 – Asdfg 2012-03-16 04:19:43

+0

e.getTextContent();是什麼給了我正確的數據。 – Asdfg 2012-03-16 04:49:03

相關問題