我有这个 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<cteProc xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04">
<CTe>
<emit>
<xFant>DOW</xFant>
<CNPJ>456789</CNPJ>
</emit>
<rem>
<CNPJ>777777</CNPJ>
<nCFOP>7101</nCFOP>
</rem>
</CTe>
<protCTe versao="1.04">
</cteProc>
要读取这个文件,我使用这个 C# 片段:
string
XmlTextReader reader = new XmlTextReader(@"C:\Conhecimento\158_v01.04-rocCTe.xml");
XmlNodeType type;
while (reader.Read())
{
type = reader.NodeType;
if (type == XmlNodeType.Element)
{
if (reader.Name == "xFant")
{ reader.Read(); XFant = reader.Value; textBox1.Text = XFant;}
if (reader.Name == "nCFOP")
{ reader.Read(); nCFOP = reader.Value; textBox2.Text = nCFOP;}
}
}
该代码运行良好,但在子节点的情况下不起作用<CNPJ>
;它只读取第一个。如何编写此代码来读取后代?我尝试过类似的东西rem.CNPJ
。
从其他问题中,我看到了这段代码:
字符串 CNPJ2,CNPJ3;
XNamespace ns = "http://www.portalfiscal.inf.br/cte";
var todas = from ide in XElement.Load(@"C:\136_v01.04.xml").Descendants(ns + "ide")
select new { CNPJ1 = (string)ide.Element(ns + "CNPJ") };
var emit = from ide1 in XElement.Load(@"C:\136_v01.04.xml").Descendants(ns + "emit")
select new { CNPJ2 = (string)ide1.Element(ns + "CNPJ") };
但是如何将“todas”分配给像 int CNPJ 这样的单个变量