我有一个这样的 XML 文件。
Parent
-Value
-Value
-Child
--Value
--Value
---Grandchild
----Value
---GrandchildEND
-ChildEND
-Value
-Child2
......
XML 文件的结构是可变的。意味着每个 XML 都有不同的 Childs , Grandchilds 等。我想打开 XML 文件,并将 XML 文件中的数据输入到 MYSQL 数据库。
这里是我用来打开 XML 并将信息输入 MySQL 的代码。
while (hardcore < 50000)
{
try
{
XDocument xmlDoc2 = XDocument.Load("c:\\a.xml");
var simpleQuery2 = (from Mainparent in xmlDoc2.Descendants("Mainparent")
select Mainparent).FirstOrDefault();
dbcon.Insert
(
simpleQuery2.Element("id").Value,
simpleQuery2.Element("action").Value,
simpleQuery2.Element("ordernr").Value,
simpleQuery2.Element("typ").Value,
simpleQuery2.Element("orderdate").Value,
simpleQuery2.Element("p4code").Value,
simpleQuery2.Element("runtime").Value,
);
}
catch (NullReferenceException)
{
textBox1.Text = "did a stupid mistake mofo";
}
hardcore++;
}
"simpleQuery2.Element("id").Value" 中的信息是存储在 MainParent 中的值。
我现在的问题是:
我无法确定 XML 文件中包含哪些值/子项/孙子项。因此,要成功将其导入 MySQL,我需要逐个导入所有元素,否则会出现错误并且导入不起作用。
我需要知道父/值名称/值或父/子/值名称/值。因为 Parent/Valuename/Value 将被导入到表“PARENT”中,而 Parent/Child/Valuename/value 将被导入到表“CHILD”中。
如果我知道哪些孩子/孙子是,我知道期望什么值。
我已经可以通过以下方式获取元素的完整列表:
XDocument xmlDoc2 = XDocument.Load("c:\\a.xml");
foreach (var name in xmlDoc2.Root.DescendantNodes().OfType<XElement>()
.Select(x => x.Name).Distinct())
{ textBox1.Text = textBox1.Text + "\r\n"+name; }