C# 如何读取xml文件并输出信息到label上
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 如何读取xml文件并输出信息到label上相关的知识,希望对你有一定的参考价值。
参考技术A 我上午刚解决了这个问题,我把代码给你看看,不知道是不是你想要的。我的xml数据很简单:
31.2
36.7
就是为了得到id=“sd”下的36.7的数据.
x下面是简单代码:
XmlDocument
dom
=
new
XmlDocument();实例化XmlDocument
dom.LoadXml(dt.Rows[i]["data"].ToString());数据是存放在
datatable
里面的。其实这句就是加载xml语句。
//dom.Save("D:\\temp.xml");
//
XDocument
xml
=
XDocument.Load("d:\\temp.xml");这两句原来用了,上一句就是保存成
xml文件
,下一句是使用XDocument
加载xml文件,这时候xml变量就可以显示为xml字符串了。
var
node=
dom.SelectSingleNode("device/item[@id='sd']");//读取指定的xml节点。
dt.Rows[i]["data"]
=
node.InnerText;//读取该节点的值。这时候终于得到了我想要的数据了。
//var
data=
from
x
in
xml.Descendants("item")
where
x.
Attribute
("id").Value
==
"sd"
select
x;这也是查询节点的语句,和上面注销的算式一组代码,但是这样读出来的还是下的xml语句,不是我想读取的内部的值。xml语句和数据库还是有一定的相似之处的。可以使用select查询来读取节点内容。
友情链接
:这个是msdn的SelectSingleNode的方法。有更详尽的解释。现在发现msdn真是越来越好用了啊!
在 C# 中将 .ddd(数字行驶记录仪)文件读取/解析为 XML
【中文标题】在 C# 中将 .ddd(数字行驶记录仪)文件读取/解析为 XML【英文标题】:Reading/Parsing a .ddd (digital tachograph) file to XML in C# 【发布时间】:2015-09-13 00:36:38 【问题描述】:顺便说一下,我对 C# 还很陌生,需要将 .ddd
(digital tachograph 输出文件扩展名)转换为 .xml
。
作为第一步,我应该阅读该文件,因此我正在查看示例。我发现的每个信息来源都使用基于.txt
的示例来读取文件。在我的示例中,文件类型.ddd
远非如此。
我正在考虑二进制读取,但也不确定。正确的方法是什么?
【问题讨论】:
如果文件不包含文本,您需要指定其格式,并且您应该使用 FileStream 和最有可能的 BinaryReader 来读取它。您可能需要联系 Siemens 以获取文件格式规范的副本,假设您可以拥有一份。文件格式可能是专有的并且未公开记录,在这种情况下,您需要谷歌搜索能够读取此类文件的其他软件解决方案。 请在此处添加一个.ddd
示例文件引用给我们尝试通过C# 阅读。
文件格式似乎记录在这里:readesm.sourceforge.net/help.html#legislation,确实不应该被视为文本文件。
很遗憾,我可能无法分享这些内容。它们包括有关车辆和驾驶员驾驶时间以及车辆属于运输公司的数据。我在网上找了一些例子,但也没有机会。
另外,ReadESM 是一个开源软件,用于读取行驶记录仪数据。 Sourceforge 网站上提供了源代码,但我没有使用 C++ 的经验,所以源代码对我来说是另一个谜。 sourceforge.net/p/readesm/code/HEAD/tree
【参考方案1】:
答案很晚,但这个库是用 C# 编写的,并且支持数字行驶记录仪规范的大部分内容。
https://github.com/jugglingcats/tachograph-reader
该库提供了两个类,可以读取驱动程序和车辆卡二进制文件并写入 XmlWriter。 XML 结构良好,为后续处理提供了二进制文件内容的清晰表示。请注意,代码不会检查文件中的数字签名。
来自自述文件:
使用非常简单。有一个主类 DataFileReader 和两个子类:VehicleUnitDataFile 和 DriverCardDataFile。您可以使用以下方法创建其中一个子类的实例:
DataFile vudf=VehicleUnitDataFile.Create();
DataFile dcdf=DriverCardDataFile.Create();
一旦你有了一个阅读器实例,你就可以给它一个二进制文件来读取和一个 XML 写入器:
vudf.Process("file.ddd", writer);
两种数据文件格式的大部分部分/功能都得到满足。可以使用 DriverCardData.config 和 VehicleUnitData.config 修改数据文件格式。这是两个 XML 文件,定义了具有特定于标准的特性(例如循环缓冲区支持)的数据结构。
【讨论】:
我已经下载了这个,似乎无法读取任何DDD文件。我没有收到错误,但内容保持为空。【参考方案2】:要执行转换,您需要知道:
如何从文件中读取二进制数据 文件可以包含的确切内容(每个字节) Xml 中所需的输出从文件中读取二进制数据相当简单——BinaryReader
具有各种访问数据的方法,特别是如果数据可以在单个前向传递中处理(似乎就是这种情况)。那里有大量 BinaryReader
示例。
更重要的是了解数据的含义。带有值0x20
的单个字节可能意味着:
32
该字节可能是 UInt16
的第一个字节,具有完全不同的值
"下一个数据块是 32 字节长"
"第一个数据块可以在偏移 32 处找到"
“下一个数据块是元数据”(这个字节表示某种块类型)
墙上有 32 瓶啤酒
如果不了解每个位置的每个字节的含义,您将一事无成。
然后有了这些信息,并将文件读入一些合适的类,转换为 Xml 就像将类传递给 XmlSerializer
一样简单。
【讨论】:
【参考方案3】:还有现成的解决方案,例如 ReadESM (https://sourceforge.net/projects/readesm/files/) 或 DDD2XML (https://www.canlab.cz/en/DDD2XML)。 DDD2XML 还支持第二代行驶记录仪。
【讨论】:
以上是关于C# 如何读取xml文件并输出信息到label上的主要内容,如果未能解决你的问题,请参考以下文章
c# 中,如何读取XML文件,并将读取到的内容显示到TreeView中
使用 pyspark,在 hadoop 文件系统上读/写 2D 图像