如果我删除了一个属性,我的程序会做一些奇怪的事情,因为它无法处理没有属性的兄弟姐妹。现在我用谷歌搜索了一段时间,但我找不到检查属性的好方法。
您喜欢检查属性的方式是什么?
while (FXMLNode != null)
{
if (FXMLNode.Name.ToLower() == "datei")
{
xmlInformationen oInfo = new xmlInformationen();
oInfo.Dateipfad = FXMLNode.InnerText;
if (FXMLNode.Attributes["checked"].Value.ToString() == "true")
oInfo.CheckBox = true;
else if (FXMLNode.Attributes["checked"].Value.ToString() == "false")
oInfo.CheckBox = false;
else if(FXMLNode == null)
oInfo.CheckBox = true;
else
oInfo.CheckBox = true;
lstAttribute.Add(oInfo);
iCounter++;
if (FXMLNode.NextSibling == null)
{
FXMLNode = FXMLNode.FirstChild;
}
else
{
FXMLNode = FXMLNode.NextSibling;
}
}
else
{
if (FXMLNode.NextSibling == null)
{
FXMLNode = FXMLNode.FirstChild;
}
else
{
FXMLNode = FXMLNode.NextSibling;
}
}
}
答案 0 :(得分:1)
您正在访问属性的值,而不知道该属性是否存在。重写代码以首先检查属性:
oInfo.CheckBox = true;
if(FXMLNode == null) oInfo.CheckBox = true; //not sure why you set it to true here
else if (FXMLNode.HasAttribute("checked"))
{
if (FXMLNode.Attributes["checked"].Value.ToString() == "true")
oInfo.CheckBox = true;
else if (FXMLNode.Attributes["checked"].Value.ToString() == "false")
oInfo.CheckBox = false;
}
请注意,检查Xml元素是否为null
应该是您要做的第一件事。如果它是null
那么它肯定没有任何属性,但你会有例外。
答案 1 :(得分:0)
你可以像这样检查属性是否为空
if (FXMLNode.Attributes["checked"]!=null)
然后检查值