我有一个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"one_answers"Width"节点,则没有问题。但是,有时就像上面示例中的最后一个一样,并没有"宽度"节点。所以我犯了一个错误。我该如何避免这种情况。我想把它作为"空"字符串。我该怎么办?
您可以检查它是否为空:
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;
如果没有具有该名称的节点,索引属性将返回空