Ila*_*321 0 c# xml linq linq-to-xml
我一直在编写一个使用XML的数据库程序.每当程序引导并且在指定的路径中找不到XML文件时,它就会生成:
<!-- Studnet Database -->
<schoolDB>
<Grades>
<Grade10/>
<Grade11/>
<Grade12/>
</Grades>
<Employees/>
</schoolDB>
Run Code Online (Sandbox Code Playgroud)
我希望程序在元素中添加一个element被调用者(提示用户输入10到12之间的等级,然后将其解析为Grade10 - > Grade12).我写了这个: studentGrade*
XDocument doc = XDocument.Load(prog.dbFile);
doc.Element(toWriteGrade).Add(new XElement("student",
new XElement("name", name),
new XElement("age", age)));
doc.Save(prog.dbFile);
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它给了我一个错误:
StudentClone1.exe中出现未处理的"System.NullReferenceException"类型异常.附加信息:对象引用未设置为对象的实例.
这有什么不对?
这意味着您没有正确选择成绩元素:
doc.Element(toWriteGrade) // this returns null
Run Code Online (Sandbox Code Playgroud)
因此成绩是元素的Grades元素,你应该这样查询:
doc.Root.Element("Grades").Element(toWriteGrade)
Run Code Online (Sandbox Code Playgroud)
或者(效率较低)您可以查看文件中的所有元素:
doc.Descendants(toWriteGrade)
Run Code Online (Sandbox Code Playgroud)