当我在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 </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);
答案 0 :(得分:1)
这不是有效的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>
答案 1 :(得分:1)
这些字符在XML 1.1中有效,因此可能尝试更改您的doctype并希望您的解析器完全实现1.1