C# 如何访问命名空间xml文件中的节点?

C# 如何访问命名空间xml文件中的节点?,c#,.net,xml,xml-namespaces,C#,.net,Xml,Xml Namespaces,我正试图从XML文件中获取一个节点,这让我非常开心。XML: <?xml version="1.0" encoding="UTF-8"?> <ApexPage xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>26.0</apiVersion> <label>aaaWsPage2</label> <description&g

我正试图从XML文件中获取一个节点,这让我非常开心。XML:

<?xml version="1.0" encoding="UTF-8"?>
<ApexPage xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>26.0</apiVersion>
    <label>aaaWsPage2</label>
    <description></description>
    <rffolder>Robert Test</rffolder>
</ApexPage>

xmlNode
始终为空,或者我在
上遇到异常。选择SingleNode
。我这里缺什么了?

你能试试这个吗

XmlElement root = doc.DocumentElement.SelectSingleNode(@"//ns1:ApexClass/ns1:rffolder) as XmlElement;

你能试试这个吗

XmlElement root = doc.DocumentElement.SelectSingleNode(@"//ns1:ApexClass/ns1:rffolder) as XmlElement;

尝试将查询字符串更改为:

string query = "//ns1:ApexClass/ns1:rffolder";

尝试将查询字符串更改为:

string query = "//ns1:ApexClass/ns1:rffolder";

我总是发现LINQtoXML更容易使用

var xDoc = XDocument.Load(fname);
XNamespace ns = "http://soap.sforce.com/2006/04/metadata";

var folder = xDoc.Root.Element(ns + "rffolder").Value;

我总是发现LINQtoXML更容易使用

var xDoc = XDocument.Load(fname);
XNamespace ns = "http://soap.sforce.com/2006/04/metadata";

var folder = xDoc.Root.Element(ns + "rffolder").Value;
您可以使用LinqToXml

 var node = XElement.Load(@"C:\Test.xml")
                    .Element(XName.Get("rffolder","http://soap.sforce.com/2006/04/metadata"));
您可以使用LinqToXml

 var node = XElement.Load(@"C:\Test.xml")
                    .Element(XName.Get("rffolder","http://soap.sforce.com/2006/04/metadata"));

如果不想使用Linq2Xml:

首先,在XML中,根被称为ApexPage,而不是ApexClass,并且您忘记了将XmlNamespaceManager传递给SelectSingleNode

因此:


如果您不想使用Linq2Xml,也应该可以使用它

首先,在XML中,根被称为ApexPage,而不是ApexClass,并且您忘记了将XmlNamespaceManager传递给SelectSingleNode

因此:


也应该工作

您不使用Linq to XML的任何原因?语法更容易使用。@Jay能给我举个例子吗?我从未将Linq与XML一起使用过。您为什么不使用Linq到XML?语法更容易使用。@Jay能给我举个例子吗?我从未将Linq与XML一起使用过。