【发布时间】:2013-06-16 04:47:48
【问题描述】:
我正在尝试为 XML 文档制作 XML 解析器,其中节点中有一些可选属性,我正在寻找一种优雅的方法,如何解决“对象引用未设置为实例”的问题。 我读过this 主题,非常相似,下面的代码看起来很有前途:
string text = (string) foo.Element("Text") ?? "Default value";
但是,当我尝试实现它时,“对象引用未设置为实例”仍然出现,因此我正在寻找另一种解决方案。这是我拼命努力的一部分。
XML 文件 1:
...
<Message id ="1" appendix = "abc" ></Message>
...
XML 文件 2:
...
<Message id ="2" ></Message>
...
我的解析器(为文件夹中的每个文件循环调用):
public MyNode Parse(string file)
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(file);
MyNode node = new MyNode();
node.messageID = (string)xDoc.GetElementsByTagName("Message")[0].Attributes["id"].Value ?? "NULL";
node.appendix = (string)xDoc.GetElementsByTagName("Message")[0].Attributes["appendix"].Value ?? "NULL";
return node;
}
你能帮帮我吗?
【问题讨论】:
-
调试器说什么是空的?
-
["appendix"] 属性...我得到空引用异常:对象引用未设置为对象的实例。或者可能是属性的值,我不确定。
标签: c# xml xml-parsing