[英]Read child node with XMLreader
我有這個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
類的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") };
但是如何將“ toda”分配給像int CNPJ這樣的單個變量
如果您使用XDocument讀取xml
XDocument XMLDoc = XDocument.Load([path to xml file]);
您有一個Descendants(XName)
,可用來獲取您要訪問的節點。
XElement element = XMLDoc.Descendants("CNPJ").FirstOrDefault();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.