关于XML父节点添加一个属性的出现的问题!求各路大侠帮助!

weizhuangwen 2012-07-17 03:11:00
国际惯例先贴出源码!!

if (root.HasChildNodes)
{

XmlElement xe = (XmlElement)root;
xe.SetAttribute("default", data);



第一句判断root是否有子节点,如果有,那么我想给这个父节点加一个属性(default=data),data是一个字符串。
但问题出现了:

运行结果后,XML文件:

<来源 default="">
<档案馆名称 default="">档案馆名称1</档案馆名称>
<档案馆代码 default="">档案馆代码1</档案馆代码>
<全宗名称 default="">全宗名称1</全宗名称>
<立档单位名称 default="">立档单位名称1</立档单位名称>
</来源>


他的子节点全部加上了这个default了,请问怎么办啊??我已经查很久了
...全文
197 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
weizhuangwen 2012-07-17
  • 打赏
  • 举报
回复
谢谢师傅!我也曾经记有文章说节点里面文本值也算是一个节点,就是没想起来。。。谢谢你指点,你的代码可以,也谢谢楼上的各位![Quote=引用 2 楼 的回复:]

按你说的,又去看了一遍,循环是正确的,并且root.HasChildNodes 已经判断了只对父节点操作,为什么他的子节点还会有这个属性呢??引用 1 楼 的回复:

你看下循环是否正确

先把其他节点都去掉,保留一些必要的节点,一个一个查看
[/Quote]
孟子E章 2012-07-17
  • 打赏
  • 举报
回复
判断错误
你可以改成
doc.DocumentElement.SetAttribute("default", data);
huangwenquan123 2012-07-17
  • 打赏
  • 举报
回复
节点的文本内容也算成了子节点
这样判断试试
if (root.HasChildNodes && root.ChildNodes[0].NodeType != XmlNodeType.Text)
{
//...
}
weizhuangwen 2012-07-17
  • 打赏
  • 举报
回复
按你说的,又去看了一遍,循环是正确的,并且root.HasChildNodes 已经判断了只对父节点操作,为什么他的子节点还会有这个属性呢??[Quote=引用 1 楼 的回复:]

你看下循环是否正确

先把其他节点都去掉,保留一些必要的节点,一个一个查看
[/Quote]
Sam830131 2012-07-17
  • 打赏
  • 举报
回复
你看下循环是否正确

先把其他节点都去掉,保留一些必要的节点,一个一个查看

110,526

社区成员

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

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

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