C# 从XML到ListView
我用C#编写了一个脚本,可以将数据从XML文件加载到ListView中 这是我用来测试的XML文件:C# 从XML到ListView,c#,xml,listview,import,linq-to-xml,C#,Xml,Listview,Import,Linq To Xml,我用C#编写了一个脚本,可以将数据从XML文件加载到ListView中 这是我用来测试的XML文件: <?xml version="1.0" encoding="utf-8"?> <Items> <wordExample languageOne="Пока" languageTwo="Doei" languageThree="Goodbye" /> <wordExample languageOne="1" languageTwo="2"
<?xml version="1.0" encoding="utf-8"?>
<Items>
<wordExample languageOne="Пока" languageTwo="Doei" languageThree="Goodbye" />
<wordExample languageOne="1" languageTwo="2" languageThree="3" />
<wordExample languageOne="4" languageTwo="5" languageThree="6" />
<wordExample languageOne="7" languageTwo="8" languageThree="9" />
</Items>
我做错什么了吗??
这就是我得到的错误:(对象引用未设置为对象的实例。)
请告诉我我做错了什么我真的很想理解:S
language
属性属于您的wordExample
项目。您需要文档子体(“wordExample”)
您可以使用显式强制转换,而不是直接访问Value属性,以避免出现NullReferenceException.
public void ImportXMLToListView(ListView listview)
{
DialogResult dr = OPEN_FILE_DIA.ShowDialog();
if (dr == DialogResult.OK)
{
XDocument doc = XDocument.Load(OPEN_FILE_DIA.FileName);
int counter = 0;
foreach (var dm in doc.Descendants("Items"))
{
string tmpOne = dm.Attribute("languageOne").Value;
string tmpTwo = dm.Attribute("languageTwo").Value;
string tmpThree = dm.Attribute("languageThree").Value;
counter++;
ListViewItem lvi;
lvi = new ListViewItem(tmpOne);
lvi.SubItems.Add(tmpTwo);
lvi.SubItems.Add(tmpThree);
listview.Items.Add(lvi);
}
}
}
foreach (var dm in doc.Descendants("wordExample"))
{
string tmpOne = (string)dm.Attribute("languageOne");
string tmpTwo = (string)dm.Attribute("languageTwo");
string tmpThree = (string)dm.Attribute("languageThree");
...
}