当前位置:编程学习 > C#/ASP.NET >>

怎么获得XML文件的总节点数?

--------------------编程问答--------------------
            //读取Xml
            XmlDocument XmlDoc = new XmlDocument();
            using (MemoryStream Ms = new MemoryStream(File.ReadAllBytes("XMLFile1.xml")))
            {
                XmlDoc.Load(Ms);

                //获得总共有多少道菜
                string Foods = string.Empty;
                XmlNodeList list = XmlDoc.SelectNodes("consumer")[0].ChildNodes;
                for (int i = 0; i < list.Count; i++)
                {
                    Foods += string.Format("{0}.{1} \n", i + 1, list[i].InnerText);
                }
                MessageBox.Show(Foods);

                //增加新节点
                XmlNode NewNode = XmlDoc.CreateElement(string.Format("food{0}", list.Count + 1));
                NewNode.InnerText = "黄瓜火腿";
                XmlDoc.SelectNodes("consumer")[0].AppendChild(NewNode);
                XmlDoc.Save("XMLFile1.xml");

            }
--------------------编程问答--------------------
引用 1 楼 vb763305825 的回复:
            //读取Xml
            XmlDocument XmlDoc = new XmlDocument();
            using (MemoryStream Ms = new MemoryStream(File.ReadAllBytes("XMLFile1.xml")))
            {
                XmlDoc.Load(Ms);

                //获得总共有多少道菜
                string Foods = string.Empty;
                XmlNodeList list = XmlDoc.SelectNodes("consumer")[0].ChildNodes;
                for (int i = 0; i < list.Count; i++)
                {
                    Foods += string.Format("{0}.{1} \n", i + 1, list[i].InnerText);
                }
                MessageBox.Show(Foods);

                //增加新节点
                XmlNode NewNode = XmlDoc.CreateElement(string.Format("food{0}", list.Count + 1));
                NewNode.InnerText = "黄瓜火腿";
                XmlDoc.SelectNodes("consumer")[0].AppendChild(NewNode);
                XmlDoc.Save("XMLFile1.xml");

            }
你這是C#吧...
應該有不同的. --------------------编程问答-------------------- 强烈建议抛弃原来的xml操作api 
使用xml.linq下面的XElement等api
这样直接linq操作 各种方便
添加节点也方便很多
XElement xml=XElement.Load() 直接加重文件.Parse()就是加重xml的string
然后添加就直接xml.add(new XElement(“food”))
多简单的操作啊。。。。。。 --------------------编程问答--------------------
引用 3 楼 lhx527099095 的回复:
强烈建议抛弃原来的xml操作api 
使用xml.linq下面的XElement等api
这样直接linq操作 各种方便
添加节点也方便很多
XElement xml=XElement.Load() 直接加重文件.Parse()就是加重xml的string
然后添加就直接xml.add(new XElement(“food”))
多简单的操作啊。。。。。。


引用 3 楼 lhx527099095 的回复:
强烈建议抛弃原来的xml操作api 
使用xml.linq下面的XElement等api
这样直接linq操作 各种方便
添加节点也方便很多
XElement xml=XElement.Load() 直接加重文件.Parse()就是加重xml的string
然后添加就直接xml.add(new XElement(“food”))
多简单的操作啊。。。。。。

你這還是C#啊....有木有VB的.. --------------------编程问答--------------------
引用 3 楼 lhx527099095 的回复:
强烈建议抛弃原来的xml操作api 
使用xml.linq下面的XElement等api
这样直接linq操作 各种方便
添加节点也方便很多
XElement xml=XElement.Load() 直接加重文件.Parse()就是加重xml的string
然后添加就直接xml.add(new XElement(“food”))
多简单的操作啊。。。。。。

因工作环境、一直都在.NET 2.0下面写代码,2.0过后的新特性的没怎么用过,例如linq、lamda这些

楼主转一下就行了,C#和VB.NET只是写法不一样

--------------------编程问答-------------------- 還是表示不懂...沒找到用什麽替代...
--------------------编程问答--------------------
引用 6 楼 chenwei438907688 的回复:
還是表示不懂...沒找到用什麽替代...


同学 写代码的人 不会找资料是硬伤啊
msdn 博客园 csdn 不都是资料么
http://msdn.microsoft.com/zh-cn/library/system.xml.linq.xelement(v=vs.100).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

仔细看下这个链接吧 会对你有帮助的
--------------------编程问答-------------------- 不是叫你转一下么。
'读取Xml
Dim XmlDoc As New XmlDocument()
Using Ms As New MemoryStream(File.ReadAllBytes("XMLFile1.xml"))
XmlDoc.Load(Ms)

'获得总共有多少道菜
Dim Foods As String = String.Empty
Dim list As XmlNodeList = XmlDoc.SelectNodes("consumer")(0).ChildNodes
For i As Integer = 0 To list.Count - 1
Foods += String.Format("{0}.{1} " & vbLf, i + 1, list(i).InnerText)
Next
MessageBox.Show(Foods)

'增加新节点
Dim NewNode As XmlNode = XmlDoc.CreateElement(String.Format("food{0}", list.Count + 1))
NewNode.InnerText = "黄瓜火腿"
XmlDoc.SelectNodes("consumer")(0).AppendChild(NewNode)

XmlDoc.Save("XMLFile1.xml")
End Using


这是帮你转好的,下次再说C#代码不会看自己到这里转换下
--------------------编程问答-------------------- LinqToXml 自己动手找找吧,在资料充裕的情况问问题是浪费自己的时间。 --------------------编程问答-------------------- 不明白你为什么非得把food定义成food1、2、3,直接所有的节点都叫food,然后 根节点.SelectNodes
看一下nodes的Count就行了啊。 --------------------编程问答-------------------- 自己写个解释器吧。要不用xml解释库dll的 --------------------编程问答-------------------- Refer this:
http://www.cnblogs.com/insus/category/357383.html
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,