我在C++中構建了一個符合和驗證的XML解析器,並試圖使它在Pocket PC中使用輕量級。XML解析和使用
在開始的時候,我決定一些「事件」添加到我的解析器像SAX那樣,通知有關的元素,處理指令等
此事件採取的派生類的生成的DOM樹XML。
當試圖主要處理實體(如果定義的話可以包含元素,pi和註釋以及它們的解析度),我會產生懷疑。
例如,我可以創建一個XMLEntityRef類,它引用某個XMLDocType對象中定義的某個XMLEntity,如.NET system.xml解析器所做的。
據我所知,對於大多數用途,應用程序需要知道元素,其內容,各自的屬性和它們各自的值......只有字符串......它不關心元素內容是否由cdata對象,實體引用和/或純文本...同樣適用於屬性值。
所以,我的問題如下:當每個xml對象出現時,將其傳遞給應用程序以及讓它(或助手類)通過連接文本構建結果屬性的值以及解決實體引用?
如果我正在進行民意調查,請回答:您的應用程序是否需要了解cdata標記以及它們位於xml文件中的位置,或者讓事情變得簡單......您想知道完整的內容值在字符串中的元素,而不用擔心它是如何構建的?
此致 莫羅H. Leggieri
呃...輕量級我試圖在一些實現中看到代碼的差異。 Xerces代碼(不包括io東西等)比system.net的mono.net實現更大。但是,就像你說的,人們可以製作完全符合3級標準的解析器。那麼......哪種類型的應用程序真的可以利用不包含xml編輯器的dom l3結構? – 2009-11-29 04:02:07
很少,但不幸的是,你必須實現大部分毛茸茸的DTD東西,才能獲得最簡單的XML解析器。這是一種恥辱,XML將無用的DTD廢話從SGML中拖出來;我希望在那裏成爲輕量級工作的XML的標準簡化子集,放棄所有文檔類型的東西(以及默認屬性和所有實體),並允許僅在根元素上進行名稱空間聲明。 – bobince 2009-11-29 21:53:13
是的......它應該存在一個輕量級的規範......謝謝 – 2009-11-30 23:08:13