标题解释了大部分内容。我所做的可能不是最好的解决方案。我看到很多网站都说你应该知道XML文件的结构。但我的目标是这个。 我想创建一个c#函数,将XML信息读入列表。我想读取整个文件,无论结构如何,都要保存在内存中。
我已经构建了一些代码,它们遍及XML文件中的每个标记,并且可以正常工作。
private void Form1_Load(object sender, EventArgs e)
{
XDocument file = XDocument.Load("file.xml");
foreach (XElement element in file.Root.Elements())
{
text += element.Name + Environment.NewLine;
if (element.HasElements)
readElement(element);
}
MessageBox.Show(text);
Application.Exit();
}
private void readElement(XElement element)
{
IEnumerable<XElement> nodes = element.Elements();
foreach (XElement el in nodes)
{
text += el.Name + Environment.NewLine;
if (element.HasElements)
readElement(el);
}
}
所以我想说这个XML文件可以阅读:
<?xml version="1.0" encoding="UTF-8"?>
<parent>
<element1>
<element2>
<element3></element3>
</element2>
</element1>
<element4>
<element5></element5>
</element4>
<element6>
<element7>
<element8>
<element9></element9>
</element8>
</element7>
</element6>
</parent>
就像我说的,我希望代码能够处理任何XML文件,无论结构如何。所以我的函数从root开始,这将是一个空列表,甚至不知道类型。由于它具有子元素,因此该列表将使用子元素在其中创建一个列表。之后,它会看到每个孩子并在其中创建一个列表,如果它也有子元素。
所以最后,我会在列表中列出列表,就像我的文件结构一样。这就是我现在卡住的地方,试图将这些列表属性添加到根列表中。 除此之外,我还想添加一个名为'Value'的属性,并输入'object'来将数据存储在标签内。
这可能有点让人理解并且可能无法做到,但我决定尝试,因为我找不到通用代码来读取互联网上的任何XML文件数据。
提前感谢您的帮助。 :)
答案 0 :(得分:0)
首先,我可能会使用XmlReader,因为我认为如果您尝试阅读的文件是一个大文件,XDocument.Load会导致问题。
using (XmlReader reader = XmlReader.Create(@"file.xml"))
{
while (reader.Read())
{
// Process each node (myReader.Value) here
}
}
希望至少有所帮助...