正在开发一个web service,其中有个web method要返回一个xml document,里面包含若干节点,分别存储不同的数据,其中一个是从数据库中查询的结果集。先执行SQL查询,得到DataSet,然后将DataSet转换为XML,插入我的xml返回文档的特定节点GetContacts下面
cmd.CommandText = "select PK_nUserId,UserFName + ' ' + ISNULL(UserLName,'') as /"Name/", " +
" PK_nUserType, UserTypeName, UserPrimaryEmail, UserAlias, UserOrganization " +
"from vwUsersAndContacts order by Name";
ds = new DataSet("GetContactList");
ad.Fill(ds);
ds.Tables[0].TableName = "userlist";
node = root.SelectSingleNode("GetContacts");
node.InnerXml = ds.GetXml();
原来程序执行正常,今天突然不工作了,调用这个web method后报错: xml parser failed at xxx line xxxx position reason is: Illegal xml character.
检查一下,发现这个数据字段是乱吗,不知道怎么存进去的,但因为这个数据字段的值正好是xml 无法处理的字符,小于0x20.所以出现这个错误。
将数据库中的数据改正后,问题没有了。今后在DataSet转换前,需要一种方法来检测字符的合法性。