Вторая итерация чтения 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

Что хранится в строках?

Проверьте, чтобы увидеть эту опцию и строки не являются нулевыми.

Другие вопросы по тегам