返回首页

嗨,
我希望有人能帮助我。
我试图解析一个非常大的XML文件。我第一次读文件中的行由行,然后使用XML的读者分析每一行。

该行看起来像这样(约20000行这样的文件):


<fieldinfo><fieldno>ABCDE</fieldno><desc><![CDATA[bubbles</desc><indicative><comcd>FCH</comcd><prodcls>6Q</prodcls><actyind>M</actyind><mi>003</mi><assmind>0</assmind><attind>0</attind><noncurrdt>0401</noncurrdt><frtrdind>0</frtrdind><fldcarrind>0</fldcarrind><hazmattind>0</hazmattind><pkgqtyind>0</pkgqtyind><pkgqty>1</pkgqty><weight><net>0.51</net><gross>0.51</gross></weight><dimension><len>4.5</len><ht>1.7</ht><wdt>4.0</wdt></dimension><rplmts><ind>0</ind><type>0</type></rplmts></indicative><pricing><nmp>NO</nmp><dlrcd>AB31</dlrcd><mkttyp>PRODUCT</mkttyp><aggtyp>TEPSF</aggtyp><mo>NACD</mo><sa>NACD  </sa><ccy>USD</ccy><effdt>20110701</effdt><net><prdprc>32.31</prdprc><crdep>1.0</crdep><dmgcrrfnd>0.0</dmgcrrfnd><totprcwdmgcr>0.0</totprcwdmgcr></net><lst><prdprc>46.0</prdprc><crdep>0.0</crdep><dmgcrrfnd>0.0</dmgcrrfnd><totprcwdmgcr>0.0</totprcwdmgcr></lst><fon><prdprc>41.4</prdprc><crdep>0.0</crdep><dmgcrrfnd>0.0</dmgcrrfnd><totprcwdmgcr>0.0</totprcwdmgcr></fon><otr><prdprc>33.96</prdprc><crdep>0.0</crdep><dmgcrrfnd>0.0</dmgcrrfnd><totprcwdmgcr>0.0</totprcwdmgcr></otr><stk><prdprc>0.0</prdprc><crdep>0.0</crdep><dmgcrrfnd>0.0</dmgcrrfnd><totprcwdmgcr>0.0</totprcwdmgcr></stk></pricing></fieldinfo>


我试图解析文件中的行的各种元素值,然后读取另一行。
我需要解析的领域是:
值等

我目前使用的从微软网站上使用case语句读取该元素的名称,然后使用ReadToFollowing去像prdPrc领域的一个例子。出于某种原因,一些值没有被退回和其他人。请帮助!

预先感谢

回答

评论会员:SAKryukov 时间:2012/02/07
好了,不读文件。使用。NET的XML解析器之一。这里是他们的简要概述:

使用System.Xml.XmlDocument类。它实现了DOM接口,这种方式是最简单和不够好,如果大小,如果文件不是太大
看到]。使用的类System.Xml.XmlTextReader;这是最快的方式阅读,特别是你需要跳过一些数据
看到{A1}]。使用类System.Xml.Linq.XDocument;这是最适当的方式,类似的XmlDocument,支持LINQ到XML编程
看到]]。
为您的文件大,System.Xml.XmlTextReader可能是最好的。然而,它也取决于与解析结果,你想要做什么。

mdash;水杨酸
评论会员:ManishaTambade 时间:2012/02/07
。您分析您的XML使用以下C#代码,你会得到每个元素的名称和文本
containg

添加命名空间 - 使用的System.Xml; {BR }上的按钮单击"编写代码"
XmlTextReader的读者=新XmlTextReader的("C:\ \ \ \戴尔\ \桌面\ \新建文件夹\ \ XMLFile1.xml"); / /这将位置和
而(reader.Read())
NBSP XML
NBSP的名称; ; NBSP {
NBSP NBSP开关(reader.NodeType)
NBSP {
的情况XmlNodeType.Element:/ /该节点是一个元素
MessageBox.Show("LT"reader.Name);
/ / MessageBox.Show("GT")
NBSP ; / / MessageBox.Show(reader.Value)的
NBSP 休息;
NBSP情况XmlNodeType.Text:/ /显示在每个文本元素
NBSP ; NBSP MessageBox.Show(reader.Value)的;
NBSP 休息;
的情况XmlNodeType.EndElement:/ /显示该元素的结束
NBSP ; NBSP / / Console.Write("LT ;/"reader.Name)
/ / MessageBox.Show("GT");
NBSP ; NBSP 休息;
}
}
NBSP
通过这个样本ü可以读取任何类型的XML和retrive任何节点,innernode或任何XML文本