我有一个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
循环不返回任何元素。为什么?
答案 0 :(得分:2)
它对我有用。检查您的命名空间f
和xsd
是否完全匹配。在您的示例中,它们不匹配。此外,您的示例中还有一些其他语法错误,例如第二个source-name
的{{1}}值不以双引号结束。
formant