2009-05-20 28 views
0

.NET FrameworkのXmlTextWriterを使用してC#からいくつかのXMLを書き出しています。これは正常に動作します。私が書き出す文字列の中には文字値5が含まれています(文字 '5'を意味するわけではありませんが、ascii値5を意味します)。MSXML2.SAXXMLReader.6.0は解析されません

ここで、xmlの仕様から、この文字がxmlでは不正であることを理解しています。しかし、私はそれが違法であれば気にしない、私はそれが私のXML(不適合)文書で欲しい。これは、ドキュメントにバイナリデータを含む可能性のある文字列を書くことができるようにするためです。

いいえ、System.Xml.XmlTextWriterはこれらの違法なxml文字をokで書き出し、xmlに"&#5x;"としてエンコードします。しかし、その後、私はMSXML2.SAXXMLReader.6.0を使ってC++アプリケーションでそれらを読みたいと思います。このパーサーは、これらの文字のいずれかに遭遇するとfatalErrorを発生させます。

私はパーサーのいくつかのプロパティを修正して動作させようとしました。 IEがこのパーサーを内部的に使用していたことは私の理解であり、IE okで不正なXMLを読み込むことができます。それで、IEはそれを解析できますか?

何か不足していますか? IEは別のパーサーを使用していますか? MSXML2.SAXXMLReader.6.0パーサーを動作させる方法はありますか?別のパーサーを使用する必要がありますか(もしそうなら、私が望むことができない場合に修正できるように、ソースコードを入手することをお勧めしますか?)

これらの不正な文字を解析できるようにするために.Netパーサーに設定できるプロパティがあります。私はSAXパーサーでC++から使用できる同等のものを探していると思います。 http://msdn.microsoft.com/en-us/library/system.xml.xmlwritersettings.checkcharacters.aspx

どうもありがとう、
-Scott

NOTE私は、CDATAセクションは、この文字をエンコードすることができるようになるとは思いません。ここをクリックしてください: http://msdn.microsoft.com/en-us/library/ms256076(VS.85).aspx
としても。私はCDATAセクションを使いたくないので、属性値に文字を使いたいと思っています。私はそれをbase64でエンコードすることもできることを理解していますが、私はそれをやりたいとは思わない...私は法律を破りたい、私は違法なXMLを解析できるようにしたい。

答えて

2

いいえ、XMLで制御文字を解析できません。

正確に言うと、これはあなたのドキュメントをXML以外のドキュメントにするでしょう。

これはハードワイヤリング仕様の一部です。違法文字を解析する場合は、独自の非準拠パーサーを作成する必要があります。

http://lists.xml.org/archives/xml-dev/199804/msg00502.html

:1として

関連する問題