2012-06-11 57 views
2

我想知道是否有人可以幫助我嘗試從包含XML文檔的字符串中刪除XML聲明。任何幫助,將不勝感激。我們使用的是MSXML 4.0,但是我在使用它時遇到了困難,結果只是做了一個子字符串。我不太熟悉ATL和其他Microsoft SDK。它有效,但我的一小部分內在死亡,我寧願以較脆弱的方式完成。從BSTR中刪除XML聲明的最佳方法

編輯:目前,我在第一次出現換行符時做了一個子字符串。我試圖對XML聲明的「?>」進行標記或子字符串,但我在獲取字符匹配方面遇到了問題(使用wcstok和substring)。我試過「\?>」,「\?>」和「?>」。理想的解決方案是將文檔加載到XMLDocument對象中,並獲取消息正文的文本。

+1

你可以在問題中添加一些代碼來說明問題嗎?究竟是什麼問題?什麼是'脆弱'現在? – PermanentGuest

+0

問題更新了更多的信息。 – binarymelon

回答

0

查找XML規範,特別是語法用於prolog

[22]序言:: = XMLDecl?雜項*(doctypedecl Misc *)?

[23] XMLDecl :: ='<?xml'VersionInfo EncodingDecl? SDDecl? S' 「?>」

所以,你handspun代碼應該能夠解析VersionInfoEncodingDeclSDDecl與XML聲明標記開始和結束標記沿。有關這些單獨項目的更多信息,請參閱規範。

但是,我的建議是使用正確的工具進行正確的工作:使用XML工具包/解析器。 (解析器和工具箱的區別主要在於工具包將支持高級操作,如DTD驗證,命名空間處理,XPath等)。

MSXML4非常古老。 MSXML6是最新的。但是,MSXML6對於除了小型XML文件以外的任何東西都是無用的。因此,根據您的輸入文件大小選擇解析器(如果性能很重要)。有Xerces,RapidXML,pugixml等免費提供的庫,其中有更好的性能。

此外,您可以指定您遇到MSXML4遇到的困難嗎?

相關問題