用&#x1F保留字符

本文关键字:amp#x1F 字符 保留字 保留 | 更新日期: 2023-09-27 18:25:54

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

DataCheck dc;

    FileStream fs1 = new FileStream(@"C:'test.xml", FileMode.Open);
       XmlSerializer xs = new XmlSerializer(typeof(DataCheck));
       dc = (DataCheck)xs.Deserialize(fs1);

用&#x1F&#x1F;保留字符

这不是有效的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>

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