如何知道xml有没有节点
How to know whether xml has any node or not
我有一个 XML 文档(Microsoft 的项目 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"这两个节点,是没有问题的。但是,有时就像上面示例中的最后一个没有 "Width" 节点。所以我犯了一个错误。我怎样才能避免这种情况。我想把它作为 "empty" 字符串。我该怎么办?
您可以检查它是否为空:
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;
如果没有具有该名称的节点,索引 属性 将 return 为空
我有一个 XML 文档(Microsoft 的项目 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"这两个节点,是没有问题的。但是,有时就像上面示例中的最后一个没有 "Width" 节点。所以我犯了一个错误。我怎样才能避免这种情况。我想把它作为 "empty" 字符串。我该怎么办?
您可以检查它是否为空:
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;
如果没有具有该名称的节点,索引 属性 将 return 为空