【发布时间】:2021-06-07 09:03:01
【问题描述】:
我有一个 XML 文件,其中包含有关航行的所有信息和所有详细信息。
我想读取XML文件中的所有记录,合并记录后我想将它写入SQL数据库。
到目前为止,我安排将 header 、 company 和 voyage 放入数组,但将所有记录的详细信息放入数组中我失败了。
这是我要处理的任务:
- 通过 FileDialog 选择并读取任何 XML 数据到 RAM(已完成)
- 创建数组并将 XML 数据读取到数组(部分完成)
- 将 XML 数据写入 DataView(部分完成)
- 创建 T-SQL INSERT 命令(部分完成)
- 将数据写入数据库(等待完成早期步骤)
从 XML 读取到 DataView 时,我可以将数据存入内存,但无法按要求分离多级数据。
确切的问题是尝试在我收到的每个 XML 文件中处理不同级别的 XML 数据。
foreach (var child in childElem.Elements("ManifestData"))
{
foreach(var x in child.Elements())
{
var checkName = x.Name.ToString();
switch (checkName)
{
case "Company":
Globals.Companys.Clear();
foreach (var y in x.Elements())
{
Globals.Companys.Add(y.Name.ToString(), y.Value.ToString());
}
break;
case "Voyage":
Globals.Voyages.Clear();
foreach (var y in x.Elements())
{
Globals.Voyages.Add(y.Name.ToString(), y.Value.ToString());
}
break;
case "BLs":
int recs = 0;
Globals.BL.Clear();
textBox2.Clear();
foreach (var y in x.Elements())
{
foreach (var z in x.Elements("units"))
{
Globals.Units.Add(y.Element("number").Value.ToString(), z.Value.ToString());
}
Globals.BL.Add(y.Element("number").Value.ToString(), y.Value.ToString());
recs = recs + 1;
textBox2.AppendText("\n" + y.ToString());
string output = string.Join("\n", Globals.BL);
MessageBox.Show(output);
}
break;
default:
break;
}
}
}
在我的示例 XML 中,您看到有 3 个 BL,所有 BL 数据都有不同的级别。可能有数百个 BL,具有不同级别的货物和危险品。
我在这里处理多级 XML 数据时遇到问题。
如果你能帮我解决这个非常基本的问题,我会很高兴。我希望学习并留给人们了解如何为自己的数据库制作桌面 XML 阅读器应用程序。
这是XML Data 示例 您可以在这里找到所有来源:Project Reading XMLbyC#
【问题讨论】:
-
请提供Minimal, Reproducible Example,而不是您的整个代码库。这里没有人会扫描您的整个代码以查找错误,您必须提供您的尝试以及具体您遇到的问题。
-
" 将任何 XML 数据读取到 RAM" 请向我们展示此代码。查看您的 XML 后,它似乎可以由类结构表示。然后你需要它的唯一代码described here 其余的是从你的表示类访问变量并分发它们。
-
我修复了我的帖子,我应该注意到你的观点。