首页新闻找找看学习计划

C# 序列化实体成xml后多出问号了

1
悬赏园豆:20 [待解决问题]

如实体为EntityDemo

    [Serializable]
    [XmlRoot("entityDemo")]
    public class EntityDemo
    {

    [XmlElement("id")]
    public Id{get;set;}
    }

本来序列化是:

<?xml version="1.0" encoding="utf-8"?>

<entityDemo>

  <id></id>

</entityDemo>

但是服务器Net2.0升级成4.0后,出来的结果是:

?<?xml version="1.0" encoding="utf-8"?>

<entityDemo>

  <id></id>

</entityDemo>

多出了个‘?’问号

本地测试都是好的!

请大家帮忙下!看看是什么原因?

orenal的主页 orenal | 初学一级 | 园豆:164
提问于:2012-10-12 18:33
< >
分享
所有回答(1)
2

LoadXml:Data at the root level is invalid. Line 1, position 1.

在使用XmlDocument的LoadXml方法加载xml时,如是提示。意思是第一行第一个字符错误,因为xml要求文件开始必须是<xml这样,所以应该是这地方出了问题。Debug一下,发现了下面的两个问题。

1. 因为是通过web获取xml,所以编码问题导致了xml中出现乱码,我的解决办法是在获取时加入编码格式的设置,根据地址不同使用不同的encoding,具体实现跟使用的download方法有关。

2.在xml文件的开头有隐藏的非法字符,之所以说隐藏,是因为我在debug时快速监视看到的数据完全是正常的(即开始就是类似<xml...),但是取得第一个字符却不是<,而是个双引号。于是在获取到xml后又加了个replace的代码:

rssxml = System.Text.RegularExpressions.Regex.Replace(rssxml, "^[^<]", "");

意思是删除从字符串开始到<之间的所有字符。

解决了上面两个问题,再次运行,通过~

orenal | 园豆:164 (初学一级) | 2012-10-12 20:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册