C# 使用DataSet读取包含子节点的XML文件
我有一个XML文件要加载到数据集中 XML文件来自一个我无法控制的日志系统;这给我带来了一些挑战,我需要帮助来解析 XML文件如下所示:C# 使用DataSet读取包含子节点的XML文件,c#,xml,C#,Xml,我有一个XML文件要加载到数据集中 XML文件来自一个我无法控制的日志系统;这给我带来了一些挑战,我需要帮助来解析 XML文件如下所示: <LogEntry> <DateTime></DateTime> <AppId></AppId> <Description> <EncryptedData> <CipherValue></CipherValue> </Enc
<LogEntry>
<DateTime></DateTime>
<AppId></AppId>
<Description>
<EncryptedData>
<CipherValue></CipherValue>
</EncryptedData>
</Description>
<Module></Module>
</LogEntry>
我想我需要一个XML模式——但我不确定如何编写它(即使对于上面的示例),以便以我想要的方式读取数据
如果您对此有任何帮助或指导,我们将不胜感激。DataSet类不适用于通用XML输入和输出。它是关系数据库模型的内存表示。它不能表示任何不能表示为关系数据库的内容
您的数据可以建模为带有
DateTime
、AppId
和Module
列的LogEntry
表。但是什么是描述?它不是EncryptedData
表的外键-两边都没有id 如果我是你,我会研究XDocument(),而不是数据集,因为我不知道如何使用数据集使Description元素正确。如果可以选择,可以在将文本读入xml之前进行文本替换,只需删除“”和“”,只留下您关心的文本。数据集可能会采用这种方式。如果您坚持使用数据集,则可以执行以下操作DataSet-DataSet=new-DataSet()代码>var dir=@“yourPath+your.xml的名称”
dataSet.ReadXml(dir)代码>谢谢-我想我将创建自己的名为LogEntry的数据类,并通过XML循环并添加到LogEntry列表中。。。然后最后循环列表以显示任何方式。。。。
Console.WriteLine("Rows found = {0}", dt.Rows.Count);
foreach (DataRow row in dt.Rows)
{
Console.WriteLine("{0} {1} {2}",
row["DateTime"],
row["AppId"],
//row["Description"],
row["Module"]
);