我正在尝试以xml格式解析一些货币数据。 下面的代码不起作用,但是当我将它全部解析为字符串时,它确实有效。
CurrencyName = (string)d.Element("CurrencyName"),
ForexBuying = ((decimal?)d.Element("ForexBuying")),
ForexSelling = ((decimal?)d.Element("ForexSelling")),
BanknoteBuying = ((decimal?)d.Element("BanknoteBuying")),
BanknoteSelling = ((decimal?)d.Element("BanknoteSelling")),
CrossRateEuro = ((decimal?)d.Element("CrossRateEuro")),
CrossRateUSD = ((decimal?)d.Element("CrossRateUSD"))
只有CurrencyName存在于所有元素中,有时候我们有像这样的元素
<BanknoteBuying></BanknoteBuying>
,某些节点根本不携带BanknoteBuying元素。
奇怪的是我得到一个解析数据错误的日期/时间。所以简而言之,将它全部转换为字符串工作,但是转换为适当的可空数据类型不会,数据格式正确,并且本地区域设置正确以解析小数数据。
<Currency Kod="RUB" CurrencyCode="RUB">
<Unit>1</Unit>
<Isim>RUS RUBLESİ</Isim>
<CurrencyName>RUSSIAN ROUBLE</CurrencyName>
<ForexBuying>0.05011</ForexBuying>
<ForexSelling>0.05077</ForexSelling>
<BanknoteBuying></BanknoteBuying>
<BanknoteSelling></BanknoteSelling>
<CrossRateUSD>30.5655</CrossRateUSD>
<CrossRateOther></CrossRateOther>
答案 0 :(得分:1)
如果您遇到解析问题,尝试显式解析可能是值得的。例如
Decimal.Parse(d.Element("CrossRateUSD"));
或者即使TryParse可能会为您提供更多相关信息。
还有一件事需要尝试,我刚刚注意到,当我写这篇文章时,我认为你正在寻找的是元素的价值形式,而不是元素本身。在不知道您的XML格式的情况下,我不能肯定地说100%,但请尝试使用d.Element(“CrossRateUSD”)。而是改为使用值。
更新:为TryParse添加了MSDN链接。