【发布时间】:2011-02-06 03:27:57
【问题描述】:
我有以下 XPATH 行:
//det[@nItem="1"]/prod/cProd
使用XPath Visualizer 成功选择所需的节点,它会自动识别命名空间,并定义要选择的命名空间。
当我在 C# 中使用以下 XPATH 代码指定命名空间时:
"http://www.portalfiscal.inf.br/nfe//det[@nItem=\"1\"]/prod/cProd"
它给了我一个 XPathException:
未处理的类型异常 'System.Xml.XPath.XPathException' 发生在 System.Xml.dll 附加 信息: 'http://www.portalfiscal.inf.br/nfe//det[@nItem="1"]/prod/cProd' 具有无效的限定名称。
(如您所见,它不是任何转义字符或任何东西,因为它为我提供了我在异常中试图达到的内容)
如果我知道 XPath 的命名空间,如何正确选择此节点?
--[编辑]-- 我尝试读取节点的完整行:
doc.XPathSelectElement("http://www.portalfiscal.inf.br/nfe//det[@nItem=\"1\"]/prod/cProd").Value;
还有去掉不必要的东西的XML:
<?xml version="1.0" encoding="utf-8"?>
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10">
<idLote>1</idLote>
<NFe>
<infNFe versao="1.10" Id="NFe31100118583682000178550010000077778397333128">
<det nItem="1">
<prod>
<cProd>111</cProd>
</prod>
</det>
</infNFe>
</NFe>
</enviNFe>
(剪掉不必要的东西应该不是问题,因为 XPath Visualizer 给我带来了完全没有问题的节点)
【问题讨论】:
-
感谢您的更新 - 注意:发布代码和/或 XML 时,您应该始终在编辑器中突出显示这些行,然后按“代码”按钮(101 010)在编辑器工具栏上很好地格式化它们并获得语法突出显示等。否则,您的 XML 将大部分保持隐藏.....
标签: c# .net xml xpath namespaces