任何人都可以告訴如何使用ANTLR工具(在Java中)來創建我們自己的XML文檔語法以及如何使用ANTLR工具(在Java中)解析這些文檔?如何使用ANTLR解析XML文檔
0
A
回答
1
查看ANTXR,我的ANTLR派生,它支持語法本身的XML標記。您可以使用SAX或XMLPull作爲前端。 (注:它是基於ANTLR 2.X)
http://javadude.com/tools/antxr/index.html
短的例子:
header {
package com.javadude.antlr.sample.xml;
import java.util.List;
import java.util.ArrayList;
}
class PeopleParser extends Parser;
document returns [List results = null]
: results=<people> EOF
;
<people> returns [List results = new ArrayList()]
{ Person p; }
: (p=<person> { results.add(p); } )*
;
<person> returns [Person p = new Person()]
{
String first, last;
p.setId(@id); // attributes are read using "@xxxx"
}
: (first=<firstName> { p.setFirstName(first); }
| last=<lastName> { p.setLastName(last); }
)*
;
<firstName> returns [String value = null]
: pcdata:PCDATA { value = pcdata.getText(); }
;
<lastName> returns [String value = null]
: pcdata:PCDATA { value = pcdata.getText(); }
;
1
如果你想寫一個完全符合(甚至非驗證)的XML解析器,您必須閱讀W3C規範(http://www.w3.org/TR/REC-xml/)。您將需要處理內部和外部DTD子集,參數實體和一般實體。即使在ANTLR,這將是一項重大任務。您需要能夠解析URL並處理namespaceURIs。還有更多。
我懷疑你只想解析一個子集(儘管我不認爲爲標準編寫不一致的解析器是個好主意)。在這種情況下,首先要爲您的子集編寫EBNF。那麼它應該是相當直接的:-)
編輯要說得很清楚:任何不符合完整規範的不是XML。你談論的是爲XML創建「自己的語法」,但是已經有一個定義的XML語法,它不能被修改。如果您希望創建自己的「像XML一樣的語法」,但任何人認爲它實際上是XML的話都會被拒絕,因爲有許多XML構造不支持(或者會有不同的支持)。
相關問題
- 1. 如何使用Nokogiri解析XML文檔?
- 2. 如何解析XML文檔?
- 3. 如何解析XML文檔
- 4. 解析XML文檔
- 5. 解析xml文檔
- 6. 解析XML文檔
- 7. 解析XML文檔
- 8. 用Javascript解析xml文檔
- 9. 用Java解析XML文檔
- 10. 使用simplexml_load_string解析XML文檔STREAM
- 11. 使用XPath解析XML文檔
- 12. 解析XML文檔使用XPATH?
- 13. 使用.Descendents解析XML文檔(值)
- 14. 使用Ruby循環解析XML文檔
- 15. 使用JTree的解析的XML文檔
- 16. 如何解析Blackberry中的xml文檔?
- 17. 如何解析不同的XML文檔?
- 18. 如何解析這個XML文檔?
- 19. 解析HTML/XML文檔如何工作?
- 20. 如何使用ANTLR 4在線解析?
- 21. 解析xml文檔Java「無法解析」
- 22. VB.Net:解析XML文檔
- 23. 解析綠洲xml文檔
- 24. TSQL解析XML文檔
- 25. XML文檔解析javascript
- 26. 無法解析XML文檔
- 27. XML文檔解析C#
- 28. 解析XML文檔,C#
- 29. 解析soap xml文檔php
- 30. 解析XML文檔和
是否有任何理由你想使用ANTLR而不是XML解析器? – 2009-11-18 13:56:41
我想爲xml文檔創建自己的語法,並且還想構建解析器來解析這些文檔。如果有任何替代工具可以使任務更簡單? – Madhan 2009-11-18 14:07:38