C# 使用&;反序列化XML文件#x1F保留字符

C# 使用&;反序列化XML文件#x1F&#x1F;保留字符,c#,xml-serialization,C#,Xml Serialization,当我序列化XML文件中的对象时,我会在元素“Jobdesc”下获得下面XML中提到的保留字符 用这些字符反序列化同一个xml文件 错误:-System.InvalidOperationException未处理 我必须做什么来反序列化对象…我做错了什么 XML文件 <?xml version="1.0"?> <DataCheck xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.

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

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

错误:-System.InvalidOperationException未处理

我必须做什么来反序列化对象…我做错了什么

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

数据检查dc

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

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

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

这是无效的XML。这些字符既不能作为实体引用(如
;
)出现在XML中,也不能作为实际字符出现

可以使用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>

500
1/1/2013

这些字符在XML 1.1中是有效的,因此请尝试更改您的doctype,并希望您的解析器完全实现1.1

请显示objDataCheck创建和分配以及DataCheck类。此XML文件是使用XML serialize生成的。这又增加了这些字符。我有一个类,在这个类中,属性与一些文本一起归档。然后,我序列化了产生上述XML的类。如果我将标记jobdesc的文本附加上@paramveerwalia,那么包含对XML无效字符的字符串的序列化并不意味着包含此字符的XML变为有效。。。序列化应该失败,但我认为这种创建无效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>