为什么我不能 select 这个 XMLnode 的字体节点?

Why i am not able to select font node of this XMLnode?

OuterXMLXMLNode 低于

<d:entry id="_6" d:title="آ" xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng"><d:index d:value="آ" d:title="آ" /><h1 xmlns="http://www.w3.org/1999/xhtml">آ</h1><font color="#007000" xmlns="http://www.w3.org/1999/xhtml">interjection</font><br xmlns="http://www.w3.org/1999/xhtml" />
O, oh! (vocative particle)
</d:entry>

我正在尝试 select 这样,但失败了。我能够读取属性和其他节点

var vr_Word_Type = vrNode.SelectSingleNode(".//font", nsmgr);
var vr_Word_Type2 = vrNode.SelectSingleNode(".//font");

这是我的完整代码

XmlDocument rssDoc = new XmlDocument();
rssDoc.Load(@"D:\my.xml");

XmlNamespaceManager nsmgr = new XmlNamespaceManager(rssDoc.NameTable);
nsmgr.AddNamespace("d", "http://www.apple.com/DTDs/DictionaryService-1.0.rng");

XmlNodeList rssItems = rssDoc.SelectNodes("//d:entry", nsmgr);

foreach (XmlNode vrNode in rssItems)
{
    string srTitle = vrNode.Attributes["d:title"]?.Value;
    var vrSubNodes = vrNode.SelectNodes(".//d:index", nsmgr);
    List<string> lstIndex_Values = new List<string>();
    foreach (XmlNode vrD_Val in vrSubNodes)
    {
        lstIndex_Values.Add(vrD_Val.Attributes["d:value"]?.Value);
    }

    var vr_Word_Type = vrNode.SelectSingleNode(".//font", nsmgr);
    var vr_Word_Type2 = vrNode.SelectSingleNode(".//font");

}

您仍然需要使用上面代码中添加的名称空间。所以需要类似下面的东西。

vrNode.SelectSingleNode("//d:font", nsmgr);

此外,请尝试使用 /*/,因为它比 // 更快。

我不知道如何使用默认命名空间,但这种方法似乎可行:

nsmgr.AddNamespace("x", "http://www.w3.org/1999/xhtml");
// ...
var vr_Word_Type = vrNode.SelectSingleNode("x:font", nsmgr);