是否有 GetElementByTagName 来处理标记是否不存在

is there a GetElementByTagName that handles if the tag isn't there

提问人:leora 提问时间:4/25/2010 最后编辑:ThinkingStiffleora 更新时间:2/27/2013 访问量:451

问:

我在下面有以下代码,但有时“serving_description”标签不存在。现在我只是尝试了一下,但我想找出是否有更干净的方法来处理这种情况。

XmlElement servingElement = (XmlElement)servingNode;
serving.Id = Convert.ToInt32(servingElement.GetElementsByTagName("serving_id")[0].InnerText);
serving.Name = servingElement.GetElementsByTagName("serving_description")[0].InnerText;
C# XML 解析

评论


答:

3赞 Adriaan Stander 4/25/2010 #1

我宁愿检查返回的 NodeList 是否为 null,并在使用默认为 try catch 之前检查计数是否大于零

一些简单的东西,比如

serving.Name = "defaultName";
XmlNodeList elemList = servingElement.GetElementsByTagName("serving_description");
if (elemList != null && elemList.Count > 0)
    serving.Name = elemList[0].InnerText;

编辑

如果我没记错的话,您甚至可能不必检查 null,因为 GetElementsByTagName 方法可能只返回一个空列表(但我现在无法验证,对不起)

评论

1赞 Marc Gravell 4/25/2010
@astander - 从记忆中,我认为你是对的 - 你得到一个空的(但不是空的)节点集。