断言从 XML 解析的元素
我有一个使用 XElement 在 C# 中解析 XML 文档的类。
例如,我解析 XML:
IEnumerable<Element> elements =
from topLevelElement in XElement.Parse(xml).Elements("topLevel")
select new Element()
{
LongElement = Int64.Parse(topLevelElement.Element("long").Value),
StringElement = topLevelElement.Element("string").Value,
DateTimeElement = DateTime.Parse(topLevelElement.Element("datetime").Value)
};
断言元素已正确解析的最佳方法是什么?我想检查解析后 LongElement
、StringElement
和 DateTimeElement
是否不为 null,但是否有更好的方法来解决此问题,我对此持开放态度。
I have a class that parses an XML document in C# using XElement.
I parse the XML for example:
IEnumerable<Element> elements =
from topLevelElement in XElement.Parse(xml).Elements("topLevel")
select new Element()
{
LongElement = Int64.Parse(topLevelElement.Element("long").Value),
StringElement = topLevelElement.Element("string").Value,
DateTimeElement = DateTime.Parse(topLevelElement.Element("datetime").Value)
};
What would be the best way to assert that the elements were properly parsed? I would like to check if LongElement
, StringElement
, and DateTimeElement
is not null after parsing, but if there is a better way to go about this, I am open to it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您不确定元素可能返回的值,那么您确实应该使用
TryParse
,例如,您的数据类型 DateTime 和 Int32 都将
TryParse
作为可用方法。对于字符串,您只需执行简单的== null
或String.IsNullOrEmpty
If you are unsure of the values that may be returned by the elements, you should really be using
TryParse
e.g.Both your data types DateTime and Int32 have
TryParse
as an available method. As for a string, you can just do a trivial== null
orString.IsNullOrEmpty
我会使用 Linq 中的函数。如果您希望应用程序不那么严格,这些允许您抛出异常或设置所需的默认值;)
无论如何,您可以获得更多控制:
在
ConvertToInt
中可以完成您想要的所有操作,例如:也是一种更可重用的布局。
I would use functions from within Linq. These allow you to either throw an exception or set required defaults if you want your application to be not so strict ;)
Anyways, you get more control:
Where within
ConvertToInt
could do all you want, like:This is also a more reusable layout.
我会将解析状态存储在元素中作为 KeyValuePair:
I would store the parse states in the element as a KeyValuePair: