2010-05-12 61 views
1

我使用Xerces-C的SAX2來讀取XML文檔。但是,我想檢查Doctype聲明(如果有的話)以確保XML文件採用我期望的格式。如何在使用SAX2時獲取Xerces-C中的Doctype聲明?

我嘗試了從DTDHandlerEntityResolver unparsedEntityDecl和notationDecl方法似乎是比我所尋找的更低級別。

我的動機是爲了能夠確認輸入是我期待的格式,以便我可以區分不產生輸出的文檔和完全錯誤格式的文檔。

回答

1

看看LexicalHandler - startDTD將爲您提供Doctype。 但是,它不驗證文檔實際上是否遵循該Doctype。 您需要在setFeature的讀者中啓用驗證才能執行此操作。 (我只使用Java Xerces,但從文檔看起來好像方法 基本相同。)

+0

謝謝!一旦我記得/意識到使用SAX2XMLReader :: setLexicalHandler()方法「註冊」我的Handler並且只是實現它,就可以工作。 – ArtB 2010-05-19 03:40:28