Как перебрать определенный xpath для XmlDocument
, у которого нет префикса / пространства имен ?
Я анализирую XML следующим образом:
var doc = new XmlDocument();
doc.LoadXml(input);
var nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace(nsPrefix, ns);
var nodes = doc.SelectNodes(xpath, nsmgr);
Это прекрасно работает, когда передаются nsPrefix
, а также ns
и непустые .
Однако, когда пространство имен / префикс пусты, например, вэтот сценарий:
Тогда я не могу правильно проанализировать XML.
Полная функция:
public static class XPathWalker
{
public static IEnumerable<string> GetListOfAttachments(string input, string xpath, string nsPrefix, string ns)
{
var doc = new XmlDocument();
doc.LoadXml(input);
var nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace(nsPrefix, ns);
var nodes = doc.SelectNodes(xpath, nsmgr);
foreach (XmlNode node in nodes)
{
if (string.IsNullOrWhiteSpace(node.InnerText))
{
continue;
}
yield return node.InnerText;
}
}
}
Как перебрать определенный xpath для XmlDocument
, у которого нет префикса / пространства имен ?