我有XML是這樣的:爲什麼我無法從XPathNavigator中檢索屬性值?
<?xml version="1.0"?>
<a xmlns="http://mynamespace">
<b>
<c val="test" />
<b>
</a>
,我試圖像這樣的東西,找到「VAL」屬性對「C」標記的值:
XmlDocument doc = new XmlDocument();
doc.Load("myxml.xml");
nsMgr = new XmlNamespaceManager(doc.NameTable);
nsMgr.AddNamespace(@"mns", "http://mynamespace");
XPathNavigator root = doc.CreateNavigator();
foreach (XPathNavigator nav in root.Select("//mns:c", nsMgr))
{
string val = nav.GetAttribute("val", NS);
Console.WriteLine("val == "+val);
}
我的問題GetAttribute總是以空字符串的形式返回。我錯過了什麼?
更新:
看來我可以通過傳遞一個空字符串轉化的getAttribute解決這個問題,即
string val = nav.GetAttribute("val", "");
所以我的問題是現在:爲什麼這項工作?爲什麼'val'不屬於我的名字空間,儘管XML已經針對需要'val'屬性的模式進行了驗證(我在上面的示例代碼中意外省略了這一步,但我正在驗證XML)。