C#如何提取完整的xml节点集

   Everyday Italian Giada De Laurentiis 2005 30.00   Harry Potter J K. Rowling 2005 29.99   XQuery Kick Start James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan 2003 49.99   Learning XML Erik T. Ray 2003 39.95   

他们以任何方式使用XPath来选择完整的第一个节点集,例如来自

   to , 

这样,可以存储那个xml块供以后使用。

鲍勃。

假设这个XML存储在名为docXmlDocument

 XmlElement docRoot = doc.DocumentElement; XmlNode cookingNode = docRoot.SelectSingleNode("./book[@category='COOKING']"); 

我测试了这个并添加了这一行来validation:

 Console.WriteLine(cookingNode.OuterXml); 

这是输出:

 Everyday ItalianGiada De Laurentiis200530.00 

此查询将选择该节点。 您是要尝试获取一组节点还是只获取一个节点? 如果您只想要节点的子集,则可能必须自己放回书店节点。

 /bookstore/book[@category='COOKING'] 

作为XmlDocument ……

 var x = new XmlDocument(); x.Load("XmlFile1.xml"); var ns = x.SelectSingleNode("/bookstore/book[@category='COOKING']"); var res = ns.OuterXml; 

作为XDocument ……

 var x = XDocument.Load("XmlFile1.xml"); var root = new XElement("bookstore", from book in x.Element("bookstore").Elements("book") where book.Attribute("category").Value == "COOKING" select book ); 

如果您只想要书籍节点,则可以执行此操作而不是上面的根版本

 var book = x.Element("bookstore") .Elements("book") .Where(n => n.Attribute("category").Value == "COOKING") .First(); 

假设我只想提取xml文件所在的数据,如下所示。

  Everyday Italian Giada De Laurentiis 2005 30.00  

列表视图的最终结果应如下所示

  lang auth en up 

我编码如下..

 XmlNodeList elemList = doc.GetElementsByTagName("book"); for (int j = 0; j < elemList.Count; j++) { if (elemList[j].Attributes["category"].Value == "COOKING") { XmlNodeList elemList1 = doc.GetElementsByTagName("author"); for (int i = 0; i < elemList1.Count; i++) { string attrVal = elemList1[i].Attributes["lang"].Value; string attrVal1 = elemList1[i].Attributes["auth"].Value; ListViewItem lvi = new ListViewItem(); lvi.SubItems.Add(attrVal1); lvi.SubItems.Add(attrVal1); } listView1.Items.Add(lvi); } } } 

加入马修的回应:

 XmlDocument xDoc = new XmlDocument(); // (Put code to populate xDoc here) XmlNodeList xNode = xDoc.SelectNodes(@"/bookstore/book[@category='COOKING']"); 

xNode现在等于COOKING类型的书。