0

XMLファイルでオブジェクトをシリアル化すると、要素「Jobdesc」の下のXMLで言及されている予約文字が表示されます

これらの文字を含む同じ xml ファイルを逆シリアル化すると、

Error:-System.InvalidOperationException was unhandled

Q. オブジェクトをデシリアライズするために私がしなければならないことは何ですか...私が間違っていることは何ですか???????

XML ファイル

<?xml version="1.0"?>
<DataCheck xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <JobList>
    <Job>
      <JobId>500</JobId>
      <JobDate>1/1/2013</JobDate>
      <Jobdesc>Test the app &#x8;&#x1D;&#x1F;&#x1F;&#x1F;&#x1F;</Jobdesc>
    </Job>
 </JobList>
</DataCheck>

C# でコードをシリアル化する

   XmlSerializer ser = new XmlSerializer(typeof(DataCheck));

    using (FileStream objFS = new FileStream(@"C:\\test.xml", FileMode.Create))
    {
        ser.Serialize(objFS, objDataCheck);
    }

C# でコードを逆シリアル化する

データチェック dc;

    FileStream fs1 = new FileStream(@"C:\test.xml", FileMode.Open);

       XmlSerializer xs = new XmlSerializer(typeof(DataCheck));

       dc = (DataCheck)xs.Deserialize(fs1);
4

2 に答える 2

1

これは有効な XML ではありません。これらの文字は、エンティティ参照 ( など&#x8;) としても、実際の文字としても、XML に存在しない場合があります。

この XML は、CDATA を使用して有効にすることができます。

<?xml version="1.0"?>
<DataCheck xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <JobList>
        <Job>
            <JobId>500</JobId>
            <JobDate>1/1/2013</JobDate>
            <Jobdesc><![CDATA[Test the app &#x8;&#x1D;&#x1F;&#x1F;&#x1F;&#x1F;]]></Jobdesc>
        </Job>
    </JobList>
</DataCheck>
于 2013-08-01T00:22:45.507 に答える
1

これらの文字は XML 1.1 で有効なので、doctype を変更して、パーサーが 1.1 を完全に実装することを期待してください。

于 2014-03-12T10:41:38.353 に答える