-2

我有类似于此的 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); 
4

1 回答 1

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;

        }

    }
}
于 2017-06-12T14:35:00.497 回答