我有以下类型的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做错了什么更好。任何帮助,将不胜感激。感谢
答案 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);
}
}
}