C# 从XML到ListView

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"

我用C#编写了一个脚本,可以将数据从XML文件加载到ListView中

这是我用来测试的XML文件:

<?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");
    ...
}