当我们有多个名称空间时,如何在xml中查找元素值

时间:2013-04-23 20:42:43

标签: c# xml linq-to-xml xelement

我想获取 rsm元素的值:CIIHExchangedDocument / ram:ID 但我有多个名称空间和空值的问题(我不知道是否存在请求的元素)

可以通过这种方式实现:

XElement invoice = XElement.Load(invoiceStream);
XNamespace rsm = invoice.GetNamespaceOfPrefix("rsm");
XNamespace ram = invoice.GetNamespaceOfPrefix("ram");
if ((invoice.Element(rsm + "CIIHExchangedDocument")) != null)
{
    if (invoice.Element(rsm + "CIIHExchangedDocument").Element(ram + "ID") != null)
    {
        string id = invoice.Element(rsm + "CIIHExchangedDocument").Element(ram + "ID").Value;
    }
}

但我认为使用xPath会更好地满足我的需求。我想做这样的事情:

invoice.XPathSelectElement("rsm:CIIHExchangedDocument/ram:ID"):

我需要在文档中检索许多不同深度的元素,并且我有许多名称空间。

实现这一目标最简单的是什么?执行速度对我来说也很重要。

1 个答案:

答案 0 :(得分:0)

我相信你要找的是XPathNavigator类。可以在XpathNaivigator

找到如何使用的示例