c# xml ChildNodes

//将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点的文本修改为“亚胜”。XmlDocumentxmlDoc=newXmlD... //将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点的文本修改为“亚胜”。
XmlDocument xmlDoc = new XmlDocument();
XmlNodeList nodeList = xmlDoc.SelectSingleNode("root").ChildNodes;//获取bookstore节点的所有子节点
if (nodeList != null)
{
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
if (xe.GetAttribute("genre") == "李赞红")//如果genre属性值为“李赞红”
{
xe.SetAttribute("genre", "update李赞红");//则修改该属性为“update李赞红”
XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
foreach (XmlNode xn1 in nls)//遍历
{
XmlElement xe2 = (XmlElement)xn1;//转换类型
if (xe2.Name == "author")//如果找到
{
xe2.InnerText = "亚胜";//则修改
break;//找到退出来就可以了
}
}
break;
}
}
}
xmlDoc.Save("bookstore.xml");//保存。

运行到if (nodeList != null)出现错误,未将对象引用设置到对象的实例。
我不明白是为什么?
展开
 我来答
actonst
2012-07-20 · TA获得超过1.8万个赞
知道大有可为答主
回答量:8184
采纳率:80%
帮助的人:5213万
展开全部
我怀疑是这一句出错的:
XmlNodeList nodeList = xmlDoc.SelectSingleNode("root").ChildNodes;
你的XML文件根元素是root吗?会不会SelectSingleNode就已经返回null了?
顺便说一句,要看nodeList里面有没有内容,应判断其长度是否为0,而不是nodeList != null
追问
xml文件为   -   我是根节点 -   CS从入门到精通   候捷   58.3     nodeList != null 改为了   if (nodeList.Count>0)但是还是出一样的错误
追答
咳咳,你的第一句和第二句之间是不是少了xmlDoc.Load("文件名")?

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load("bookstore.xml");
foreach (XmlNode node in xmldoc.DocumentElement.ChildNodes)
{
if (node.Attributes != null && node.Attributes["genre"].Value == "李赞红")
{
node.Attributes["genre"].Value = "update李赞红";
node["author"].InnerText = "亚胜";
}
}
xmldoc.Save("bookstore.xml");
2TL雪阁瘦龟
2012-07-20 · 超过17用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:37.7万
展开全部
这个例子貌似是从网上找的,我学XML是看的貌似是这,有误,同意楼上的观点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guoxuanmingguo
2012-07-20 · 超过45用户采纳过TA的回答
知道答主
回答量:285
采纳率:78%
帮助的人:54.2万
展开全部
这种问题先用vs调试一下在发上来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式