我用XmlPullParser解析Xml。我只想處理Xml標記和其中包含的文本,然而,XmlPullParser讀取標記之間的空白文本(空格和回車)。可以設置爲忽略這個空白嗎?使XmlPullParser忽略空白?
0
A
回答
1
我沒有用之前XmlPullParser(所以道歉,如果這是完全錯誤的),但具有的javadoc一眼,好像當你調用nextToken()你必須看的返回值,並跳過IGNORABLE_WHITESPACE。
以下是不合適的(謝謝Jeff):
順便說一句你是被迫使用XmlPullParser?根據你想要達到的
聽起來,我會考慮更高層次的API,如
Simple。我通常使用
JAXB,但這不是選擇哈哈。
1
IDK是否存在忽略空白的設置。如果您將當前節點跟蹤爲字符串,則可以編碼以忽略空白。如果當前節點爲空,則忽略文本。我的測試顯示它只是逃脫了換行等。我圍繞它進行了如下優化。 危險該工程對XML我使用它可能無法正常工作對你的
String N=""; // Yes I know its Capitalized but its the Current Node and very important to keep track of.
if (eventType == XmlPullParser.START_TAG) {
N = xpp.getName();//save the name of the node.
...
} else if (eventType == XmlPullParser.END_TAG) {
N = "";//clear the name of the node.
} else if (eventType == XmlPullParser.TEXT) {
//if the name of the node is not blank then process it
if (!N.equals("")) {
//I have a node so process it
}
好運
0
尋找一個解決方案後,自己添加一個遲到的回答。
解析器有一個isWhiteSpace()
方法。只能在與文字相關的事件類型上調用它(例如TEXT
,CDSECT
,IGNORABLE_WHITESPACE
),否則會拋出。
您可以通過調用提升解析器的next
或getEventType
來獲取事件類型。
調用next
會自動跳過IGNORABLE_WHITESPACE
事件。只有在調用nextToken
時纔會觸發此事件類型,該類型更加細化,並且會觸及所有事件類型。儘管我們通過調用next來跳過「可忽略的」空白,但解析器仍然發現幾乎所有空白都不可檢索,因此需要您有權跳過它。
boolean isEoD = false;
do{
switch (parser.next()){
default:
break;
case XmlPullParser.TEXT:
if(!parser.isWhitespace()) //Throws if called on wrong eventType
System.out.println("Text: " + parser.getText());
break;
case XmlPullParser.START_TAG:
case XmlPullParser.END_TAG:
System.out.println("TAG: " + parser.getName()+ "\n");
break;
case XmlPullParser.END_DOCUMENT:
isEoD = true;
}
}while(!isEoD);
相關問題
- 1. PrettyPrinting。忽略空白
- 2. XmlPullParser unclosed標記忽略
- 3. 分組,但忽略空白
- 4. 忽略空白讀取XML
- 5. diff忽略空白喜歡
- 6. COPY忽略空白列
- 7. accepts_nested_attributes_for忽略空白值
- 8. 忽略空白的NSPredicate
- 9. 忽略空白的CSS
- 10. str.match忽略空白值
- 11. .NET Git忽略空白
- 12. 使`git status`忽略空白變化
- 13. C - 使用sscanf忽略空白
- 14. 使COUNTIFS忽略空白單元格
- 15. XMLPullParser返回空白結果
- 16. 強制sed忽略空白空間
- 17. XmlPullParser for sdcard上的xml不會忽略空格
- 18. 解析REXML文檔,忽略空白
- 19. 休眠搜索3.3-忽略IntraWord空白
- 20. 水銀DIFF:忽略尾隨空白?
- 21. Eclipse:在提交期間忽略空白
- 22. AS3 TextField.textWidth忽略末尾的空白
- 23. 忽略空白和製表符在Java
- 24. JavaScript忽略空白下拉值
- 25. SUMPRODUCT如果空白忽略行?
- 26. 搜索忽略某些空白參數
- 27. 如何忽略LINQ查詢空白元
- 28. 忽略公式空白的範圍
- 29. 想讓extjs網格忽略空白
- 30. 外殼:發現應該忽略空白
由於內存限制,他可能使用了pull語法分析器。我不確定您是否熟悉Android,但是使用完整的內存中AST解析大型XML文檔是不可能的 - 您必須使用pull解析來處理超過特定大小的任何內容。 –
啊,好的,很高興知道! +1謝謝:) – phippsnatch
真正的建議,他可以用XmlPullParser做些什麼,或者有更好的方法嗎?顯然,我習慣於處理服務器而不是手機哈哈:)樂趣! – phippsnatch