首页 新闻 会员 周边

SelectSingleNode找不到数据

0
悬赏园豆:10 [已解决问题] 解决于 2009-11-23 15:04

早上以前都正常,弄的时候SelectSingleNode还能找到数据

下午怎么就不行了,反复调试的时候观察到:

root正常。

bookroot不正常,只返回第一条。参数bname输入正常。

nodels正常。这里也用到了bname,都能找到数据。

        public static void removebookmark(string bname,string mark)
{

string file = "d:\\book.xml";
XmlDocument xmldoc
= new XmlDocument();
xmldoc.Load(file);
XmlNode root
= xmldoc.SelectSingleNode("books");
XmlNode bookroot
= xmldoc.SelectSingleNode("books/book['" + bname + "']");
if (mark == name)
{
bookroot.RemoveAll();
root.RemoveChild(bookroot);
}
else
{
XmlNodeList nodels
= xmldoc.SelectNodes("books/book['" + bname + "']/mark");
foreach (XmlNode nd in nodels)
{
if (nd.InnerText == mark)
{
bookroot.RemoveChild(nd);
}
}
}
xmldoc.Save(file);
}

<?xml version="1.0" encoding="utf-8"?>
<books>
<book bname="687" url="C:\Documents and Settings\Administrator\桌面\687.txt">
<mark>1</mark>
<mark>3</mark>
</book>
<book bname="1321622" url="C:\Documents and Settings\Administrator\桌面\1321622.txt">
<mark>11</mark>
<mark>31</mark>
</book>
</books>

崩溃,前天、昨天、今天早上都正常,下午SelectSingleNode怎么就找不到数据。
哪位高手指点下
问题补充: 问题解决用XmlNode node.Attributes.Item(0).Value//第一个属性是0,第二属性是1 用XmlNode node.Attributes.GetNamedItem(name).Value,出现错误提示"未将对象引用设置到对象的实例"异常的原因"
晓风斩柳的主页 晓风斩柳 | 初学一级 | 园豆:175
提问于:2009-11-20 15:21
< >
分享
最佳答案
0

string file = "d:\\book.xml";
            XmlDocument xmldoc
= new XmlDocument();
            xmldoc.Load(file);
            XmlNode root
= xmldoc.DocumentElement.SelectSingleNode("//books");//这句代码一般是为了获取根节点

            OptionXml(rootNode);
          
            //赋完值保存文档
            xd.Save(filename);

/// <summary>
       ///
       /// </summary>
       /// <param name="root">根节点</param>
        protected void OptionXml(XmlNode root)
        {
           
            foreach (XmlNode node in root.ChildNodes)
            {
                if (node.Name.Contains("file"))
                {
                    node.InnerText = "hello world";
                }
                //递归遍历
                OptionXml(node);
              
            }
         
        }
希望能帮到你

收获园豆:9
wolfes | 初学一级 |园豆:174 | 2009-11-20 16:05
还是非常感谢,提供了点思路
晓风斩柳 | 园豆:175 (初学一级) | 2009-11-23 15:03
其他回答(1)
0

SelectSingleNode本來就是為了返回第一個XMLNode

收获园豆:1
woody.wu | 园豆:3621 (老鸟四级) | 2009-11-20 16:12
XmlNode xmlnode.SelectSingleNode(string xpath,XmlNamespaceManager nsmgr)是选择匹配xpath的第一个表达式的xmlnode
支持(0) 反对(0) 晓风斩柳 | 园豆:175 (初学一级) | 2009-11-23 15:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册