我的XML代码与此类似:
<BookStore xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Book>
<bookGenre>Fantasy</bookGenre>
<bookTitle>A Storm of Swords</bookTitle>
<authorInformation>
<authorId>12345</authorId>
<authorName>
<firstName>George</firstName>
<middleInitial>R.R.</middleInitial>
<lastName>Martin</lastName>
</authorName>
</authorInformation>
</Book>
<customer>
<customerData />
</customer>
</BookStore>
<customer>
节点可能有也可能没有子节点,具体取决于用户输入。
我正在尝试使用XmlDocument.SelectNodes和XPath导航来选择<BookStore>
,<customer>
以及<customer>
中包含的所有节点。
我一直在环顾四周,阅读XPath和.SelectNodes几个小时,但似乎还没有完全理解它们是如何工作的。有人会解释如何使用它们或如何在我的情况下使用它们?如果还有其他方法可以解决我的问题,我也会对这些问题持开放态度! (我正在使用C#)
编辑:这是我根据我阅读的内容尝试的内容
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlStr);
XmlNode root = doc.DocumentElement;
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
nsmgr.AddNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
XmlNodeList nodeList = root.SelectNodes("descendant::customer:child::Node");
doc.Save(Console.Out);
答案 0 :(得分:1)
试试xml linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication62
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
XElement customer = doc.Descendants("customer").FirstOrDefault();
Boolean children = customer.HasElements;
}
}
}