XMLDocument 加载XML总是报错

hejianhuacn 2006-09-14 11:14:08
//在C#代码里解析XML出错
string xmlmsg="<?xml version=\"1.0\" ?><SPImportUserConfig spid=\"01000001\" createdate=\"2006-9-14\"><Columns><column name=\"col1\" describe=\"用户名\" type=\"varchar(300)\"/><column name=\"col2\" describe=\"地址\" type=\"varchar(300)\"/><column name=\"col3\" describe=\"电话\" type=\"varchar(300)\"/><column name=\"col4\" describe=\"用户等级\" type=\"varchar(300)\"/></Columns><ColumnsMapping><column name=\"col1\" mappedcolname=\"username\"/><column name=\"col2\" mappedcolname=\"addressdetail\"/><column name=\"col3\" mappedcolname=\"mobile\"/></ColumnsMapping><IndexColumn><column name=\"col3\"/></IndexColumn><ServiceColumn name=\"col4\"><relationship typename=\"a \"packageid=\"1\" /><relationship typename=\"b \"packageid=\"2\" /></ServiceColumn></SPImportUserConfig>";//在一行里
//定义XmlDocument,加载xmlmsg
XmlDocument xmldoc=new XmlDocument();
try
{
xmldoc.LoadXml(xmlmsg);
}
catch(Exception e)
{
//异常处理
}
总是报错:
这是一个意外的标记。标记应为“NAME”。 行 1,位置 611。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Xml.XmlException: 这是一个意外的标记。标记应为“NAME”。 行 1,位置 611。
如果把xmlmsg中的<ServiceColumn .>..</ServiceColumn>的子节点去掉,就不会报错
也就是说这中间的XML格式不对,但是找不出来,把xmlmsg中的转意符"\"去掉,保存为文件,用IE浏览器也可以显示 那错误在哪里呢?请各位帮看看
...全文
453 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxp916 2006-09-14
  • 打赏
  • 举报
回复
<relationship typename=\"a \"packageid=\"1\" />
应该是

<relationship typename=\"a\" packageid=\"1\" />




net_lover(【孟子E章】) 为什么啊 ?好像xml中敏感字符只有‘,’,‘&’,‘<','>'是?麻烦解下惑,达人
jc15271149 2006-09-14
  • 打赏
  • 举报
回复
顶孟子
Santos 2006-09-14
  • 打赏
  • 举报
回复
net_lover(【孟子E章】) 强啊
孟子E章 2006-09-14
  • 打赏
  • 举报
回复
正确写法

string xmlmsg = "<?xml version=\"1.0\" ?><SPImportUserConfig spid=\"01000001\" createdate=\"2006-9-14\"><Columns><column name=\"col1\" describe=\"用户名\" type=\"varchar(300)\"/><column name=\"col2\" describe=\"地址\" type=\"varchar(300)\"/><column name=\"col3\" describe=\"电话\" type=\"varchar(300)\"/><column name=\"col4\" describe=\"用户等级\" type=\"varchar(300)\"/></Columns><ColumnsMapping><column name=\"col1\" mappedcolname=\"username\"/><column name=\"col2\" mappedcolname=\"addressdetail\"/><column name=\"col3\" mappedcolname=\"mobile\"/></ColumnsMapping><IndexColumn><column name=\"col3\"/></IndexColumn><ServiceColumn name=\"col4\"><relationship typename=\"a\" packageid=\"1\" /><relationship typename=\"b\" packageid=\"2\" /></ServiceColumn></SPImportUserConfig>";


孟子E章 2006-09-14
  • 打赏
  • 举报
回复
<relationship typename=\"a \"packageid=\"1\" />
应该是

<relationship typename=\"a\" packageid=\"1\" />
hejianhuacn 2006-09-14
  • 打赏
  • 举报
回复
感谢各位的回复 多谢net_lover(【孟子E章】)
实在不好意思,原来XML 中每个属性间 必须有空格分隔
<relationship typename="a"(这里必须有空格)packageid="1"/> 哎 写出来免得以后再犯错
孟子E章 2006-09-14
  • 打赏
  • 举报
回复
不是长度限制的问题。我的帖子拷贝过去都是可以的。
孟子E章 2006-09-14
  • 打赏
  • 举报
回复
你的
<relationship typename=\"a \"packageid=\"1\" />
表示的是
<relationship typename="a "packageid="1" />
你看没有问题嘛?
你是2个属性还是一个属性?2个属性你的写法肯定是错的,一个属性要进行编码
hejianhuacn 2006-09-14
  • 打赏
  • 举报
回复
报的错:这是一个意外的标记。标记应为“NAME”。 行 1,位置 613。就是说这段XML有没有结束的tag,可是都结束了,还有为什么在Eclipse的XMLEditor中放在一行就显示有错,格式化了下就没错了?难道XMLParser中读取数据的长度是有限制?
uumlwy 2006-09-14
  • 打赏
  • 举报
回复
我看你还不如先把这一串string,保存在一个xml文件中,先看看xml的格式对不对.

好像没有对长度有限制的

我做的比你那个还要长的多得多呢
hejianhuacn 2006-09-14
  • 打赏
  • 举报
回复
感谢各位的回复.
是不是XMLDocument的LoadXML(string xml)对xml的长度有限制?
这是数据库里面的一条数据:
<?xml version="1.0" ?>
<SPImportUserConfig spid="01000001" createdate="2006-9-14">
<Columns>
<column name="col1" describe="姓名" type="varchar(300)" />
<column name="col2" describe="手机号" type="varchar(300)" />
<column name="col3" describe="地址" type="varchar(300)" />
<column name="col4" describe="用户等级" type="varchar(300)" />
</Columns>
<ColumnsMapping>
<column name="col1" mappedcolname="realname" />
<column name="col2" mappedcolname="mobile" />
<column name="col3" mappedcolname="addressdetail" />
</ColumnsMapping>
<IndexColumn>
<column name="col2" />
</IndexColumn>
<ServiceColumn name="col4">
<relationship typename="a " servicetype="1" />
<relationship typename="b " servicetype="2" />
</ServiceColumn>
</SPImportUserConfig>
在XMLEditer里面格式化了下,全部放在一行时会提示有错误,但格式化后就不会显示有错误,上面带有转义符的是在调试监视器里复制出来的,是不是LoadXML(string xml)中使用的XML解析器的问题?很头疼
LMTZ 2006-09-14
  • 打赏
  • 举报
回复
<?xml version="1.0"?>
<SPImportUserConfig spid="01000001" createdate="2006-9-14">
<Columns>
<column name="col1" describe="" type="varchar(300)"/>
<column name="col2" describe="" type="varchar(300)"/>
<column name="col3" describe="" type="varchar(300)"/>
<column name="col4" describe="" type="varchar(300)"/>
</Columns>
<ColumnsMapping>
<column name="col1" mappedcolname="username"/>
<column name="col2" mappedcolname="addressdetail"/>
<column name="col3" mappedcolname="mobile"/>
</ColumnsMapping>
<IndexColumn>
<column name="col3"/>
</IndexColumn>
<ServiceColumn name="col4">
<relationship typename="a" packageid="1" />
<relationship typename="b" packageid="2" />
</ServiceColumn>
</SPImportUserConfig>
wuhuiITren 2006-09-14
  • 打赏
  • 举报
回复
代码还在很乱啊
顶孟子

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧