所以我的方法是将xmlfile作为参数(这样我就不会知道标记名称等等)并将元素,它们的值以及是否具有属性的值附加到标签上。 。我觉得已经可以回答(尝试查找),但是堆栈溢出的大多数示例都是解析特定的xml文件,您可以在XDocument.Load()文件之后执行linq搜索。我注意到的另一种方法是像这样对doc.descendant中的每个元素进行foreach,但这就像是一团糟(而且甚至没有获得属性及其值)
XDocument doc = XDocument.Load(TextBox1.Text);
foreach (XElement element in doc.Descendants())
{
Label1.Text += element.Name + element.Value + "\n";
}
传递任何xml文件的方式是什么,并且基本上只接受元素名称+它们的值以及属性名称+它们的值。
编辑:我感觉我越来越近了。这是我到目前为止更新的内容
XDocument doc = XDocument.Load("http://localhost:56767/File1.xml");
int i = 0;
foreach (XElement element in doc.Descendants())
{
var child = element.Elements();
foreach (XElement node in child)
{
BulletedList1.Items.Add(node.Name.LocalName + ": "+node.Value);
if (node.HasAttributes)
{
foreach (XAttribute attributeNode in node.Attributes())
{
if (!attributeNode.Name.LocalName.Contains("xm"))
{
BulletedList1.Items.Add(attributeNode.Name.LocalName + ": " + attributeNode.Value);
}
}
}
i++;
}
}
Label1.Text += i;
我现在唯一的问题是,后代首先将数据分块(例如,如果我有
<Books>
<Book>
<Title>title</Title>
<Author>author</Author>
<Book>
<Book>
<title>title2</Title>
<Author>author2</Author>
<Book>
<Books>
它从最高级别开始,然后向下进行,因为我的所有数据不止一次循环遍历。
答案 0 :(得分:0)
您可以使用任何DOM解析器将通用XML文档解析为通用数据结构。
听起来您想要的东西比DOM解析器更具体(通用性更低),但不如您从(例如)数据绑定技术获得的东西那么具体。如果是这样,那么您就必须确切说明要应用哪些约束(出于总体普遍性的约束),以及要用于表示结果的数据结构。