是否有辦法在xml文件中獲取第一個標記,並確保它使用sax解析器具有相應的結束標記?獲取第一個標籤Sax解析器
0
A
回答
1
只要處理endDocument,如果被調用,那麼它是格式良好的。
1
您可以處理startElement()
,endElement()
和endDocument()
,或者只處理endDocument()
。如果文檔格式不正確,endDocument()
應該引發異常。然而,對於學習的緣故,我將展示一些例子:
public class MyParser extends DefaultHandler {
Stack<String> stk;
//...
public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException {
stk.push(name);
}
public void endElement(String uri, String localName, String name) throws SAXException {
if(stk.pop().equals(name)) {
// Input is well formed for each tag
}
else {
// Not well-formed
}
}
}
1
像你想使用DOM解析這聽起來更多:
public class MyParser extends DefaultHandler {
private String firstElement;
private String lastElement;
public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException {
if(firstElement == null) {
firstElement = name;
}
}
public void endElement(String uri, String localName, String name) throws SAXException {
lastElement = name;
}
public void endDocument() {
if(lastElement.equals(firstElement)) {
// Well formed input
}
}
}
您也可以確保所有元素用棧關閉。
如果您使用sax解析,您實際上是在說您不想一次處理(加載到內存中)整個文檔。如果您搜索第一個標籤結束(根標籤),您將立即掃描整個文檔,並放棄SAX的好處。
當您加載文檔並且格式不正確時,DOM解析也會丟失。所以不需要手動檢查根標籤是否關閉。
0
使用String實例變量將SAX ContentHandler留空。實現startElement標籤,只有當實例變量爲null時,纔會獲取標籤的名稱並將實例變量設置爲等於它。現在,您可以使用該contentHandler運行解析器,如果它正常完成(不拋出SAX異常),則解析器找到結束標記,並且您可以從contentHandler中的實例變量中檢索外部標記的名稱。
0
如有標籤不打開或關閉,因此不需要它處理....因此,如果XML文件是錯誤/損壞SAX解析器會拋出異常SAX解析器實際上拋出一個異常
相關問題
- 1. Android SAX解析器沒有從標籤中獲取全文
- 2. SAX解析器忽略CDATA - html標籤
- 3. SAX解析器返回標題的第一個字符
- 4. 如何根據第一個已知標籤來分支SAX解析器?
- 5. 使用sax解析器解析xml具有不同的標籤
- 6. SAX解析在編碼標籤
- 7. 如何使用python SAX解析器獲取標籤之間的文本?
- 8. 使用SAX解析器解析大型XML文件(跳過一些行/標籤)
- 9. IS touchXML是一個SAX解析器嗎?
- 10. Sax解析器停止在第一個新行
- 11. Xerces jar是一個DOM解析器或SAX解析器
- 12. Android SAX解析器
- 13. SAX解析器vs XMLPull解析器
- 14. SAX XML解析器或DOM解析器?
- 15. SAX解析器。如何阻止SAX解析器連接到Internet?
- 16. 閱讀標籤嵌套使用SAX解析器
- 17. Android,SAX解析器閱讀Html標籤時出現問題
- 18. SAX解析器:拿到下面子標籤tagcontent
- 19. XML解析第二個標籤
- 20. 使用android sax解析器解析XML
- 21. 的Android - 解析使用SAX解析器
- 22. 使用sax解析器解析XML
- 23. SAX解析器不解析specal字符 「&」
- 24. CLojure sax解析器示例
- 25. 麻煩與SAX解析器
- 26. 運行Sax解析器
- 27. 多級XML SAX解析器
- 28. Android中的SAX解析器?
- 29. SAX解析器 - NumberFormatException的
- 30. SAX解析器破壞 -
是的,但我不知道的開始元素,因爲它可以是一百...但我需要知道的第一個元素的XML文件打開並關閉 – Podge 2012-07-24 15:13:09
@ user1381564:我的答案更新 – 2012-07-24 15:20:16