【发布时间】:2010-03-25 12:30:17
【问题描述】:
不知何故,使用 linq 我无法在一开始就用这个 CUF 字段对其进行测试:
<NFe>
<infNFe versao="1.0" Id="NFe0000000000">
<ide>
<cUF>35</cUF>
<!--...-->
</ide>
</infNFe>
</NFe>
使用以下代码:
XDocument document = XDocument.Load(@"c:\nota.xml");
var query = from NFe in document.Descendants("NFe")
select new
{
cuf = NFe.Element("infNFe").Element("ide").Element("cUF").Value
};
整个 XML 加载到文档中(选中),但 NFe.cuf 什么也没给我。我猜节点内部的参数搞砸了..
如何使用 linq 获得这个“cuf”?
如果我想要 infNFe 中的 Id 参数怎么办?
--[编辑]--
我忘了给出“开头的愚蠢的url”,结果是它是NAMESPACE,(火狐贡献的xml的命名空间不显示)
现在可以了:
XNamespace ns = "http://www.portalfiscal.inf.br/nfe";
XElement root = XElement.Load(@"c:\nota.xml");
textBox1.Text = root.Element(ns + "infNFe").Element(ns + "ide").Element(ns + "cUF").Value;
有没有办法在某个地方设置命名空间,而不需要把它放在每个字段调用中?
【问题讨论】:
-
您没有发布有效的 XML(缺少
</ide>、</infNFe>和</NFe>)。看起来像一个愚蠢的请求,但看着它(非缩进)让人认为他们都是根。 -
@Alex - 编辑 XML 以使其更清晰。
-
嗯,我确实提到这是我的 XML 的开始,寻址节点只需要它的名称和父节点,我只想展示它的样子,而不是提供有效的 XML .
-
您仍然没有正确缩进 XML -
ide是infNFe的子代,而不是兄弟姐妹