【发布时间】:2015-05-08 13:54:29
【问题描述】:
我正在开发一个 C# 桌面应用程序,在一个模块中,我将 xml 文件的信息显示到一个列表视图中,我使用 Linq to XML 编写了我的解决方案,就像这样
string path = "prueba.xml";
listView1.Items.Clear();
listView1.Columns.Add(path, 400);
XElement doc = XElement.Load(path);
var result = from persona in doc.Elements("persona")
select new{
nombre = Convert.ToString(persona.Element("nombre").Value).Trim(),
ocupacion = Convert.ToString(persona.Element("ocupacion").Value).Trim()
};
foreach (var persona in result)
{
/*ListViewItem item = new ListViewItem(persona.nombre);
item.SubItems.Add(persona.ocupacion);*/
ListViewItem nombre = new ListViewItem("<nombre> " + persona.nombre + " </nombre>");
ListViewItem ocupacion = new ListViewItem("<ocupacion> " + persona.ocupacion + " </ocupacion>");
listView1.Items.Add("<persona>");
listView1.Items.Add(nombre);
listView1.Items.Add(ocupacion);
listView1.Items.Add("</persona>");
listView1.Items.Add("");
}
}
}
它工作得很好,你可以看到列表视图中有代表 xml 文件节点的项目,但这些项目是特定于这个 xml 文件的
<?xml version="1.0" encoding="utf-8" ?>
<personas>
<persona>
<nombre>Pablo el primero</nombre>
<ocupacion>Programador Cliente-Servidor</ocupacion>
</persona>
<persona>
<nombre>Pablo el segundo</nombre>
<ocupacion>Programador Web</ocupacion>
</persona>
</personas>
正如您在 C# 代码中看到的那样,它适用于上面的 xml 文件,但如果我检索另一个具有不同节点名称的 xml 文件,例如
<juego>
<juegos>
<name id="ac"> God of War III </name>
...
</juegos>
</juego>
我的代码不会向我显示节点 <juegos>...</juegos>,因为它仍会显示 <person>...</person> 节点,因为它被创建为仅显示节点 <person>...</person> 所以我的问题:有没有办法显示 xml 的信息使用 Linq to XML 将文件写入列表视图,同时显示在 xml 文件中编码的信息?
我想知道我是否可以在列表视图中显示这种格式:
<?xml version="1.0" encoding="utf-8" ?>
<personas>
<persona>
<nombre>Pablo el primero</nombre>
<ocupacion>Programador Cliente-Servidor</ocupacion>
</persona>
<persona>
<nombre>Pablo el segundo</nombre>
<ocupacion>Programador Web</ocupacion>
</persona>
</personas>
【问题讨论】:
-
为什么不使用 TreeView 来显示 XML 数据?
-
您的意思是在列表视图中一般显示任何 xml 文件结构吗?