Вторая итерация чтения XML с Linq
У меня есть веб-сервис, работающий на C#, который общается с внешней стороной с помощью XML-файлов. Все отлично работает, но теперь мне нужно отсканировать XML-файл, в котором есть 2 элемента, которые мне нужно перебрать. XML имеет ту же структуру, что и приведенная ниже.
<Order>
<OrderLine>
<OrderID>5</OrderID>
<Description>OrderDescription</Description>
<Value>150</Value>
<Option>
<OptionID>15</OptionID>
<OptionDescription>OptionDescription</OptionDescription>
</Option>
<Option>
<OptionID>16</OptionID>
<OptionDescription>Another Option</OptionDescription>
</Option>
<OrderLine>
<OrderLine>
<OrderID>5</OrderID>
<Description>OrderDescription</Description>
<Value>150</Value>
<Option>
<OptionID>5</OptionID>
<OptionDescription>OptionDescription</OptionDescription>
</Option>
<OrderLine>
</Order>
В веб-сервисе я перебираю каждый элемент OrderLine внутри родителя Order. Работает как надо.
Проблема, однако, заключается в элементах Option внутри OrderLine. Количество Option-элементов не является статичным. На OrderLine это может варьироваться. Поэтому я решил использовать тот же метод, что и для OrderLines. Однако я получаю ожидание, когда я делаю это.
Object reference not set to an instance of an object
Я сузил исключение до проблемы. И это лежит в этой строке.
Options = (from option in lines.Elements("Option")
where option.HasElements
select new Option() {
OptionId = option.Element("OptionID").Value,
Description = option.Element("OptionDescription").Value
}).ToList()
Options - это IEnumerable с Option в качестве его класса. Класс Option имеет 2 переменные: OptionID и Description.
Любые мысли о том, как правильно ссылаться на объект?
2 ответа
Не должно ли это быть:
option.Element("OptionDescription").Value
и не:
option.Element("Description").Value
Что хранится в строках?
Проверьте, чтобы увидеть эту опцию и строки не являются нулевыми.