парсинг xml, когда элементу не хватает его значения - PullRequest
2 голосов
/ 10 января 2011

Я пытаюсь проанализировать некоторые данные валюты в формате 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 вообще.Странно то, что я получаю ошибку разбора даты / времени.Короче говоря, приведение всего к строковым функциям, а приведение к соответствующему типу данных, допускающему значение NULL, - нет, данные правильно сформированы, и локальная область установлена ​​правильно для анализа десятичных данных.

  <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>

1 Ответ

1 голос
/ 10 января 2011

Если у вас возникли проблемы с синтаксическим анализом, возможно, стоит попробовать явный анализ. Например

Decimal.Parse(d.Element("CrossRateUSD"));

Или даже с TryParse может принести вам больше информации об этом.

Еще одна вещь, которую я хотел бы попробовать, которую я только заметил, когда писал об этом, это то, что, я думаю, вы ищете значение формы элемента, а не сам элемент. Не зная вашего формата XML, я не могу точно сказать 100%, но попробуйте d.Element ("CrossRateUSD"). Вместо этого значение.

ОБНОВЛЕНИЕ: добавлена ​​ссылка на MSDN для TryParse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...