1. ホーム
  2. c#

[解決済み] 名前が「'」文字で始まることはできません。

2022-02-27 02:43:37

質問内容

C#でXMLをパースしています。データベースからXMLを取得し、XmlTextReaderで読み込む前にMemoryStreamに変換しているところです。問題は、このエラーが発生することです。 Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 1, position 3. 以下は、私のXMLとそれを読むための私のコードです(それはデータベースから正しく出てきており、最初の文字が空白ではありません)。何か提案はありますか?

XMLです。

<? xml version="1.0" encoding="utf-8" ?>
<form>
   <e order="0" type="custom" name="test">
      <fi type="text" />
      <o />
   </e>
   <e order="1" type="zip" />
   <e order="2" type="state" />
</form>

C#:

byte[] byteArray = new byte[formXml.Length];
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
byteArray = encoding.GetBytes(formXml);
MemoryStream xmlStream = new MemoryStream(byteArray);

XmlTextReader xmlReader = new XmlTextReader(xmlStream);
while (xmlReader.Read())
{
    if (xmlReader.HasValue)
    {
        returnString += xmlReader.Depth.ToString();
    }
}

エンコーディングが原因かと思いましたが、UTF8とASCIIで試してみましたが、何も見つかりません。

解決方法は?

はい、<? と xml の間のスペースを削除する必要があります。

<?xml version="1.0" encoding="utf-8" ?>
<form>
   <e order="0" type="custom" name="test">
      <fi type="text" />
      <o />
   </e>
   <e order="1" type="zip" />
   <e order="2" type="state" />
</form>

これ は、関連するXMLの仕様です。