var doc = XDocument.Parse(inputXML);

当<!>引用<!>;数量<!>节点不存在。如何在评估之前检查是否存在?

 decimal amt;
 var amount = doc.Descendants("amount").SingleOrDefault().Value;
 bool amountValid = decimal.TryParse(amount, out amt);

我需要确保<!> quot; amount <!> quot;在评估之前可用。

有人可以帮忙吗?

全部谢谢, 〜在圣地亚哥

有帮助吗?

解决方案

试试这个:

var amountElement = doc.Descendants("amount").SingleOrDefault();

if (amountElement != null)
{
    decimal amt;
    bool amountValid = decimal.TryParse(amountElement.Value, out amt);

    // other code
}

其他提示

XElement提供显式演员对于大多数值类型,包括Nullable<Decimal>

var amt = (decimal?)doc.Descendants("amount").SingleOrDefault();

从那里,您可以检查amtnull还是使用HasValue属性。

更新:值得指出的是,如果值不是FormatException,则演员会抛出Decimal。如果您仍想使用TryParse,则可以使用string强制转换:

保持代码简单
decimal amt;
var amount = (string)doc.Descendants("amount").SingleOrDefault();
bool amountValid = decimal.TryParse(amount, out amt);

在内部,字符串强制转换是像Ben的样本一样实现的,返回element.Value或<=>。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top