如何使用XPathSelectElement进行查询

时间:2016-10-19 21:33:39

标签: c# xpath linq-to-xml

我有以下类型的XML,其中包含大量DocType值:

<InvalidDocTypes>
  <DocType>DocType1</DocType>
  <DocType>DocType2</DocType>
</InvalidDocTypes>

我正在尝试使用以下内容查询XML以获取特定的文档类型:

document.PriorDocumentType = "DocType1"
var node = doc.XPathSelectElement("//InvalidDocTypes[DocType='" + document.PriorDocumentType + "']");

我只期望当XML中没有值时节点为空,但我总是得到一个null。使用针对XML的Linq查询,或者我对XPathSelectElement做错了什么更好。任何帮助,将不胜感激。感谢

1 个答案:

答案 0 :(得分:1)

我测试了您的代码,它似乎正在运行 - 请验证下面的控制台应用程序。当 DocType 存在时,它会打印整个 InvalidDocTypes 元素,当它不存在时,它会为null:

using System;
using System.Xml.Linq;
using System.Xml.XPath;

namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            var xml = @"<InvalidDocTypes>
  <DocType>DocType1</DocType>
  <DocType>DocType2</DocType>
</InvalidDocTypes>";

            var documentType = "DocType1";

            var xmlDocument = XDocument.Parse(xml);
            var node = xmlDocument.XPathSelectElement("//InvalidDocTypes[DocType='" + documentType + "']");
            Console.WriteLine(node);
        }
    }
}