首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用&#x1F对XML文件进行反编译;保留字符

用&#x1F对XML文件进行反编译;保留字符
EN

Stack Overflow用户
提问于 2013-08-01 08:15:16
回答 2查看 3.9K关注 0票数 0

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

使用这些字符反序列化相同的xml文件会得到以下结果

Error:-System.InvalidOperationException was unhandled

问:要反序列化我做错了的object...what,我必须做些什么?

XML文件

代码语言:javascript
代码运行次数:0
运行
复制
<?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#中序列化代码

代码语言:javascript
代码运行次数:0
运行
复制
   XmlSerializer ser = new XmlSerializer(typeof(DataCheck));

    using (FileStream objFS = new FileStream(@"C:\\test.xml", FileMode.Create))
    {
        ser.Serialize(objFS, objDataCheck);
    }

在C#中反序列化代码

DataCheck dc;

代码语言:javascript
代码运行次数:0
运行
复制
    FileStream fs1 = new FileStream(@"C:\test.xml", FileMode.Open);

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

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

回答 2

Stack Overflow用户

发布于 2013-08-01 08:22:46

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

此XML可以通过使用CDATA来使其有效:

代码语言:javascript
代码运行次数:0
运行
复制
<?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>
票数 1
EN

Stack Overflow用户

发布于 2014-03-12 18:41:38

这些字符在XML1.1中是有效的,因此可以尝试更改文档类型,并希望解析器完全实现1.1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17983154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档