一个非常新手的问题,因为我很少使用XML。我正在尝试为Subsonic API编写内容。 xml看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.6.0">
<indexes lastModified="1313158157783">
<index name="A">
<artist name="Albums" id="5c5c3139322e3136382e322e31305c566f6c756d655f315c4d757369635c416c62756d73"/>
</index>
<index name="S">
<artist name="Singles" id="5c5c3139322e3136382e322e31305c566f6c756d655f315c4d757369635c53696e676c6573"/>
</index>
</indexes>
</subsonic-response>
我只是想获取索引节点。
我正在尝试这个,但不确定我是否正确行事。 SelectNodes和SelectSingleNode都返回emtpy。我确定我错过了一些简单的事情。
XmlNamespaceManager nsmgr = new XmlNamespaceManager(index.NameTable);
nsmgr.AddNamespace("", "http://subsonic.org/restapi");
XmlNodeList xnList = index.SelectNodes("/subsonic-response/indexes/index", nsmgr);
XmlNode mainnode = index.SelectSingleNode("/subsonic-response", nsmgr);
foreach (XmlNode xn in xnList)
{
}
我尝试过使用和不使用namespacemanager,这是同样的事情
答案 0 :(得分:3)
尝试使用非空XML名称空间前缀:
XmlNamespaceManager nsmgr = new XmlNamespaceManager(index.NameTable);
nsmgr.AddNamespace("x", "http://subsonic.org/restapi");
XmlNodeList xnList = index.SelectNodes("/x:subsonic-response/x:indexes/x:index", nsmgr);
XmlNode mainnode = index.SelectSingleNode("/x:subsonic-response", nsmgr);
我在尝试将空字符串用作(默认)XML名称空间前缀
时遇到了麻烦答案 1 :(得分:1)
怎么样:
nsmgr.AddNamespace("x", "http://subsonic.org/restapi");
和
XmlNodeList xnList = index.SelectNodes("/x:subsonic-response/x:indexes/x:index", nsmgr);