2009-03-30 15 views
2

Visual Studio 2008で次のファイルを新しいXMLファイルとして作成し、次のエラーを報告します。エラーメッセージとは何か、それが間違った形式のXMLファイルとして扱われる理由は何ですか?無効なXMLファイルですか?

ここにXMLファイルと関連するエラーメッセージがあります。

<?xml version="1.0" encoding="utf-8"?> 
<Foo>&#x2;</Foo> 

Error 1 Character ' ', hexadecimal value 0x2 is illegal in XML documents. XMLFile1.xml 2 6 Miscellaneous Files 

avdanceでのおかげで、 ジョージ

+0

ここで何をしようとしているのですか?それを理解しようとしているだけですか、解決しようとしている問題がありますか?後者の場合、私たちはそれについていくつかのアイデアを伝えることができます。 – dommer

+0

こんにちは、私はXMLのシリアライゼーションを学んでいます。私は奇妙な例外を経験しました。 :-) – George2

+0

XMLに任意のバイナリデータを入れることはできません。バイトを格納する必要がある場合は、Base64などのアプリケーションレベルのエンコーディングを使用する必要があります。 – bobince

答えて

2

0x2には、印刷可能な文字ではありません。

+0

@dommer、&、#および;私のサンプルでは、​​x2を除いて有効ですか? – George2

+0

はい。たとえば、eはOKです。 – dommer

+0

このルールを証明する文書がありますか?XMLファイルには印刷可能な文字が含まれている必要がありますか?私はもっ​​と学ぶことに興味があります。 – George2

9

問題は&#x02への参照です。本質的には印刷できないランダムなバイナリデータです。これはXML1.0では許可されていません(XML 1.1以降ですが、XMLバージョンを変更しても.Netバージョンでは許可されません)。

+0

@Banang、1.「バイナリリファレンス」 - 何が「バイナリリファレンス」であるかを知りたい場合は、推奨する読み取り値ですか? 2. XMLにはXML 1.0の印刷可能な文字しか含めることができませんでしたか?この規則を証明する書類がありますか?私はもっ​​と学ぶことに興味があります。 – George2

+0

@George: "バイナリリファレンス"は、編集時に修正されたタイプミスです。それはバイナリデータへの参照だったと言っています。 ;)私はhttp://www.xml.com/pub/a/2003/02/26/binaryxml.htmlを見てみることをお勧めします。xmlとバイナリに関する歴史的な読書については、http://www.xml .com/pub/a/98/07/binary/binary.html –

+0

XML 1.1の比較http://www.w3.org/TR/REC-xml/#charsets with http://www.w3.org/TR/xml11 /#charsets Charはわずかに異なって定義されています。 –

2

バイナリデータをXMLに入れる必要がある場合は、CDATAセクションを使用します。 http://www.w3schools.com/XML/xml_cdata.asp

+0

このルールを証明する文書はありますか?XMLファイルには印刷可能な文字が含まれている必要がありますか?私はもっ​​と学ぶことに興味があります。 – George2

+0

ルールはありませんが、Internet Explorerなどでファイルを表示する場合は、印刷できる文字が必要です。角括弧( '<' and '>')のような特定の文字がXMLファイルで特別な意味を持つことに注意してください。 –

+0

"角括弧( '<' and '>')のような特定の文字がXMLファイルで特別な意味を持つことに注意してください。 - それは私の質問に関係していますか? – George2

3

セクション2.2における文字の定義を参照してください、特にXML 1.0 specification

をチェックアウト:

Char ::= #x9 | 
     #xA | 
     #xD | 
     [#x20-#xD7FF] | 
     [#xE000-#xFFFD] | 
     [#x10000-#x10FFFF] 

4.1項の実体参照の定義:

文字文字参照を使用して参照される文字は、Charの出力と一致する必要があります。

+0

ありがとうツールキット、#x2が範囲外にあるようですか? – George2

4

私は、新しいXMLファイルとしてのVisual Studio 2008で次のファイルを書いて、それが 次のエラーを報告します。 とは何ですか、なぜそれが が間違った形式のXMLファイルとして扱われるのかについてのエラーメッセージですか?

W3C XML 1.0 Specificationによれば、&#x20;下にあるXML文書に許可される唯一の文字は、タブ(09)、改行(0A)とキャリッジリターン(0D)です。

00を除く

XML 1.1 allows almost all characters、が、非常にまれにしか実装されていない、もう1つはXML 1.1の実装を見つけることに頼るべきではありません。

XML 1.1仕様でさえ、現在許可されている文字を&#x20;以下にすることを強くお勧めします。

+0

@Dimitre、1.正面に&文字を追加すべきかどうか混乱しますか?文書から、私はルールを見ませんでした。私のケースでは、&#x2は値が2の正しいUnicode文字を意味すると思いますか? – George2

+0

@ George2 1つのUnicode文字を "文字参照"として書くことができます。その形式は&#{number}です。アンパサンドを開始しなければ、これはほんの一部の文字列になり、XMLパーサによって文字参照として解釈されません。 –

関連する問題