C# XPath如何在属性值为{x:null}时返回null值

C# XPath如何在属性值为{x:null}时返回null值,c#,xml,xpath,C#,Xml,Xpath,xml显示Name的属性值为{x:Null}。我试图使用XPath返回null,而不是“{x:null}”。 有没有一种方法可以使用名称空间来实现这一点 我的单元测试: var xml = "<RootActivity xmlns=\"clr-namespace:InfoStore.Reports.Activities.ReportPack.CoreActivities;assembly=InfoStore.Reports.Activities\" xmlns:x=\"http://s

xml显示Name的属性值为{x:Null}。我试图使用XPath返回null,而不是“{x:null}”。 有没有一种方法可以使用名称空间来实现这一点

我的单元测试:

  var xml = "<RootActivity xmlns=\"clr-namespace:InfoStore.Reports.Activities.ReportPack.CoreActivities;assembly=InfoStore.Reports.Activities\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:sap2010=\"http://schemas.microsoft.com/netfx/2010/xaml/activities/presentation\">" +
              "<Parent Depth=\"1\">" +
                "<Child Name=\"{x:Null}\" sap2010:WorkflowViewState.IdRef=\"ReportPackForEachItemActivity_2\" Id=\"10\" Group=\"A\">ChildValue #10</Child>" +
                "<Child Id=\"20\"  Group=\"B\">ChildValue #20</Child>" +
                "<Child Id=\"21\"  Group=\"A\">ChildValue #21</Child>" +
                "<Parent Depth=\"2\">" +
                  "<Child Id=\"11\">ChildValue #11</Child>" +
                  "<Child Id=\"12\">ChildValue #12</Child>" +
                "</Parent>" +
              "</Parent>" +
            "</RootActivity>";

  var xDoc = XDocument.Parse(xml);

  XNamespace rootNamespace = xDoc.Root.GetDefaultNamespace();
  var xmlnsNameSpace = rootNamespace.NamespaceName;

  var xNameSpace = "http://schemas.microsoft.com/winfx/2006/xaml";

  XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager(new NameTable());
  nameSpaceManager.AddNamespace("xml_ns", xmlnsNameSpace);

  var firstChild = xDoc.XPathSelectElements("/xml_ns:RootActivity/xml_ns:Parent/xml_ns:Child[position()=1]", nameSpaceManager).FirstOrDefault();
  Assert.IsNotNull(firstChild, "Expected Child element");

  //TODO how to use this namespace to get null value
  XNamespace nsX = XNamespace.Get(xNameSpace);

  var nameAttribute = firstChild.Attribute("Name");
  Assert.IsNotNull(nameAttribute, "Expected attribute");

  //TODO - How to resolve value of {x:Null} to bring back Null.

  //Assert.IsNull(nameAttribute.Value, "Expeceted value for attribute");
var xml=“”+
"" +
“儿童价值#10”+
“儿童价值#20”+
“儿童价值#21”+
"" +
“儿童价值#11”+
“儿童价值#12”+
"" +
"" +
"";
var xDoc=XDocument.Parse(xml);
XNamespace rootNamespace=xDoc.Root.GetDefaultNamespace();
var xmlnsnaspace=rootNamespace.NamespaceName;
var xNameSpace=”http://schemas.microsoft.com/winfx/2006/xaml";
XmlNamespaceManager nameSpaceManager=newxmlnamespacemanager(newnametable());
addNamespaceManager.AddNamespace(“xml_ns”,xmlnsNameSpace);
var firstChild=xDoc.XPathSelectElements(“/xml\ns:RootActivity/xml\ns:Parent/xml\ns:Child[position()=1]”,nameSpaceManager).FirstOrDefault();
IsNotNull(firstChild,预期的子元素);
//TODO如何使用此命名空间获取空值
XNamespace nsX=XNamespace.Get(XNamespace);
var nameAttribute=firstChild.Attribute(“名称”);
IsNotNull(nameAttribute,“预期属性”);
//TODO-如何解析{x:Null}的值以返回Null。
//Assert.IsNull(nameAttribute.Value,“属性的expected值”);

您是否使用
子字符串(/xml\ns:RootActivity/xml\ns:Parent/xml\ns:Child[position()=1]/@Name,3,4)进行过测试?我不确定
XPathSelectElements
函数接受Xpath函数是否使用
子字符串(/xml\ns:RootActivity/xml\ns:Parent/xml\ns:Child[position()=1]/@Name,3,4)
?我不确定
XPathSelectElements
function是否接受Xpath函数