C#XPathSelectElements返回null?

时间:2013-04-24 10:55:40

标签: c# xml

我有一个XML文档:

<xsd:form-definition xmlns:xsd="http://...m.xsd"
                     xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     xsi:schemaLocation="....xsd" ...>
    <xsd:page>
        <xsd:formant source-name="label" id="guid1" />
        <xsd:formant source-name="label  id="guid2" />
        <xsd:formant source-name="label" id="guid3">
            <xsd:value>2013-04-24</xsd:value>
        </xsd:formant>
   </xsd:page>
</xsd:form-definition>

和C#代码我想迭代特定元素并获取id属性和value(如果存在) - 让我们说labels

为此,我尝试了代码

    XDocument xml = (document load);

    XmlNamespaceManager ns = new XmlNamespaceManager(new NameTable());
    ns.AddNamespace("f", "http://m.xsd");


    foreach (XElement e in xml.XPathSelectElements("//f:formant[@source-name = 'label']", ns))
    {
     ....
    }

foreach循环不返回任何元素。为什么?

1 个答案:

答案 0 :(得分:2)

它对我有用。检查您的命名空间fxsd是否完全匹配。在您的示例中,它们不匹配。此外,您的示例中还有一些其他语法错误,例如第二个source-name的{​​{1}}值不以双引号结束。

formant