【发布时间】:2015-11-17 12:53:08
【问题描述】:
我有一个这样的 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 有这些“名称”和“宽度”节点,则没有问题。但是,有时就像上面示例中的最后一个没有“宽度”节点。所以我犯了一个错误。我该如何避免这种情况。我想把它作为“空”字符串。我该怎么办?
【问题讨论】:
-
如果您使用 C# 6,您可以使用:
string name = xn["Name"]?.InnerText ?? string.Empty;,或者如果您真的想要可重用性,请添加以下扩展方法:public static string Read(this XmlNode node, string name, string nonExistantValue = string.Empty) { if (node[name] == null) return nonExistantValue; return node[node].InnerTextl }
标签: c# xml xmlnode xmlnodelist