LINQ to XML.Перечень не дал результатов - PullRequest
0 голосов
/ 23 сентября 2011

У меня проблемы с заполнением объекта из файла XML.Я почти точно скопировал найденный пример с измененными именами переменных, но получаю исключение «Перечисление не дало результатов».

Вот мой код:

    Dim element As XElement = XElement.Load(path)

    Dim itemProps = From p In element...<Property> _
                Where p.<LanguageCode>.Value = "en_us" _
                Select p.<Title>.Value, p.<Description>.Value

Используя контрольные точки, я подтвердил, что переменная 'element' правильно заполняется с помощью метода XElement.Load (path).

Вот файл XML, к которому осуществляется доступ:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Items>
  <Item ItemID="1">
    <Property ItemPropertyID="1">
      <Title>Title1</Title>
      <Description>Description1</Description>
      <LanguageCode>en-us</LanguageCode>
    </Property>
  </Item>
  <Item ItemID="2">
    <Property ItemPropertyID="2">
      <Title>Title2</Title>
      <Description>Description2</Description>
      <LanguageCode>en-us</LanguageCode>
    </Property>
  </Item>
  <Item ItemID="3">
    <Property ItemPropertyID="3">
      <Title>Title3</Title>
      <Description>Description3</Description>
      <LanguageCode>en-us</LanguageCode>
    </Property>
  </Item>
  <Item ItemID="4">
    <Property ItemPropertyID="4">
      <Title>Title4</Title>
      <Description>Description4</Description>
      <LanguageCode>en-us</LanguageCode>
    </Property>
  </Item>
  <Item ItemID="5">
    <Property ItemPropertyID="5">
      <Title>Title5</Title>
      <Description>Description5</Description>
      <LanguageCode>en-us</LanguageCode>
    </Property>
  </Item>
  <Item ItemID="6">
    <Property ItemPropertyID="6">
      <Title>Title6</Title>
      <Description>Description6</Description>
      <LanguageCode>en-us</LanguageCode>
    </Property>
  </Item>
</Items>

По сути, XML-запрос должен возвращать заголовок и описание для каждого свойства, имеющего элемент с именем Language Code, который равен «en-us».У меня есть ощущение, что моя проблема заключается в моем XML-коде, но я застрял здесь надолго.Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

"en_us" должно быть "en-us" :).

Упс!Ваш ответ не может быть отправлен, потому что:

тело должно содержать не менее 30 символов;Вы ввели 28

Там.Теперь это больше, чем 28. :) 1009 *

0 голосов
/ 23 сентября 2011

Попробуйте взять одну из точек из

    Dim itemProps = From p In element...<Property>

Вы опускаетесь на 3 уровня вниз, когда вам нужно только спуститься на 2 *.

Если это не сработает, попробуйте только одну точку, потому что по сути путь, по которому вы путешествуете, находится всего на 1 ниже корня документа.

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