C# 使用&;反序列化XML文件#x1F保留字符
当我序列化XML文件中的对象时,我会在元素“Jobdesc”下获得下面XML中提到的保留字符 用这些字符反序列化同一个xml文件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.
错误:-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 </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 ]]></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 ]]></Jobdesc>
</Job>
</JobList>
</DataCheck>