0

当我在 XML 文件中序列化对象时,我在下面的元素“Jobdesc”下得到了 XML 中提到的保留字符

用这些字符反序列化同一个 xml 文件给了我

Error:-System.InvalidOperationException was unhandled

问:我必须做什么才能反序列化对象...我做错了什么??????

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# 中反序列化代码

数据检查直流;

    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 1.1 中是有效的,所以也许可以尝试更改您的文档类型并希望您的解析器完全实现 1.1

于 2014-03-12T10:41:38.353 回答
1

那不是有效的 XML。这些字符可能不存在于 XML 中,无论是作为实体引用(如&#x8;)还是作为实际字符。

可以使用 CDATA 使该 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><![CDATA[Test the app &#x8;&#x1D;&#x1F;&#x1F;&#x1F;&#x1F;]]></Jobdesc>
        </Job>
    </JobList>
</DataCheck>
于 2013-08-01T00:22:45.507 回答