我有一个XML文档(Microsoft的Project XML),如下所示:
<Columns>
<Column>
<Name>A</Name>
<Width>100</Width>
</Column>
</Columns>
<Columns>
<Column>
<Name>B</Name>
<Width>200</Width>
</Column>
</Columns>
<Columns>
<Column>
<Name>C</Name>
</Column>
</Columns>
我正在尝试获取他们的姓名和宽度文本:
var man = new XmlNamespaceManager(xdoc.NameTable);
man.AddNamespace("ns", "http://schemas.microsoft.com/project");
XmlNodeList xnList = xdoc.SelectNodes("/ns:Columns/ns:Column", man);
foreach (XmlNode xn in nodeList[i])
{
string name = xn["Name"].InnerText);
string width = xn["Width"].InnerText);
}
如果XML具有这些“Name”和“Width”节点,则没有问题。但是,有时像上面示例中的最后一个没有“宽度”节点。所以我接受了一个错误。我怎么能避免这一点。我想把它作为“空”字符串。我该怎么办?
答案 0 :(得分:2)
您可以检查它是否为空:
string name;
if (xn["Name"] == null)
{
// Node doesn't exists
name = string.Empty;
}
else
{
name = xn["Name"].InnerText;
}
或者你可以只用一个班轮来完成:
string name = xn["Name"] == null ? string.Emtpy : xn["Name"].InnerText;
或者如果你正在使用C#6:
string name = xn["Name"]?.InnerText;
如果没有具有该名称的节点,则index属性将返回null