如何修复 System.Xml.Linq.XContainer.Element(...) 返回 null

Posted

技术标签:

【中文标题】如何修复 System.Xml.Linq.XContainer.Element(...) 返回 null【英文标题】:How to fix System.Xml.Linq.XContainer.Element(...) returned null 【发布时间】:2019-06-01 21:24:26 【问题描述】:

我正在尝试在 XML 文件中写入和读取数据,写入工作正常,但在读取时我得到 System.Xml.Linq.XContainer.Element(...) 返回 null。错误。我首先通过表单从用户那里获取输入,将其保存在 XML 中,然后从 XML 中获取数据并在列表视图中显示它

编写代码

private void Btn_addproduct_Click(object sender, RoutedEventArgs e)
        
            i++;
            XDocument doc = XDocument.Load("C:\\Users\\karam\\source\\repos\\KanbanBoard\\bin\\Debug\\tester.xml");
            doc.Root.Add(new XElement("Project",
                new XElement("ProjectId", i),
                new XElement("ProjectTitle", projectTitle.Text),
                new XElement("ProjectDescription", projectDescription.Text),
                new XElement("StartDate", startDate.Text),
                new XElement("EndDate", endDate.Text),
                new XElement("ToDoLimit", toDoLimit.Text),
                new XElement("WorkInProgressLimit", workInProgressLimit.Text),
                new XElement("DoneLimit", doneLimit.Text)
                ));
            doc.Save("C:\\Users\\karam\\source\\repos\\KanbanBoard\\bin\\Debug\\tester.xml");
        

阅读代码

 private void Btn_productlist_Click(object sender, RoutedEventArgs e)
        
            XDocument doc = XDocument.Load("C:\\Users\\karam\\source\\repos\\KanbanBoard\\bin\\Debug\\tester.xml");
            var result=doc.Descendants("Projects").Select(x=>new
            
                projectid = x.Element("ProjectId").Value,
                projecttitle = x.Element("ProjectTitle").Value,
                projectdescription = x.Element("ProjectDescription").Value,
                startdate = x.Element("StartDate").Value,
                enddate = x.Element("EndDate").Value,
                todolimit = x.Element("ToDoLimit").Value,
                workinprogresslimit = x.Element("WorkInProgressLimit").Value,
                donelimit = x.Element("DoneLimit").Value,
            );


            Projectlistview.ItemsSource = result;

        

【问题讨论】:

您正在写入“项目”元素,但从“项目”中读取 【参考方案1】:

Descendants(name) 方法返回给定文档的后代元素的集合。 (只有名称匹配的元素才会包含在集合中)

它给出了null,因为它找不到名称为Projects 的元素。

 XDocument doc = XDocument.Load("C:\\Users\\karam\\source\\repos\\KanbanBoard\\bin\\Debug\\tester.xml");
 var result = doc.Descendants("Projects").Select(x => new //Should be Project
 //rest of the code

【讨论】:

以上是关于如何修复 System.Xml.Linq.XContainer.Element(...) 返回 null的主要内容,如果未能解决你的问题,请参考以下文章

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞

如何在DOS环境下修复系统