LINQ to XML 从文件中获取所有节点名称
本文关键字:节点 获取 to XML 文件 LINQ | 更新日期: 2023-09-27 18:34:12
我得到了一个这样的XML文件。
Parent
-Value
-Value
-Child
--Value
--Value
---Grandchild
----Value
---GrandchildEND
-ChildEND
-Value
-Child2
......
XML 文件的结构是可变的。表示每个 XML 都有不同的子项、孙项等。我想打开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"(的信息。值"是存储在主父级中的值。
我的问题是现在:
我无法确定XML文件中有哪些值/孩子/孙子。因此,要成功将其导入MySQL,我需要导入每个元素的所有元素,否则我会收到错误并且导入不起作用。
我需要知道父/值名称/值或父/子/值名称/值。因为父/值名称/值将被导入到表"父"中父/子/值名称/值将被导入到表"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; }
你的问题仍然有点模糊。我觉得它仍然有点模糊的原因是因为你说每个 XML 都是不同的,但我不确定这与父/子/...流。
var nodeNames = XDoucment.root.Descendants()
.Select(e => e.Name.Localname)
.Distinct()
.ToList()
此代码将为您提供 XML 文件中所有不同节点名称的列表。
我已经回答了一个类似的问题 标题为使用 c# 从 xml 文件中读取动态元素
要获取所有 XML 节点,只需使用以下命令:
XmlDocument xml_doc = new XmlDocument();
xml_doc.Load(something);
XmlNodeList list = xml_doc.SelectNodes("//*");
如果您想要更多内容,只需修改 XPath 表达式:)。