C# 如何访问命名空间xml文件中的节点?
我正试图从XML文件中获取一个节点,这让我非常开心。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 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一起使用过。