LINQ to XML-запрос не возвращает результатов - PullRequest
0 голосов
/ 20 июля 2011

Я делаю немного XLINQ в VB для работы. Мне нужно извлечь некоторые значения из небольшого фрагмента XML, как указано здесь:

<?xml version="1.0" encoding="utf-8"?>
  <Fields>
    <typeQtyRadioButtonList>1</typeQtyRadioButtonList>
    <cmbQtyCheck>Reject</cmbQtyCheck>
    <optHaulierDetCheck>1</optHaulierDetCheck>
    <txtReasonCode>1</txtReasonCode>
    <optGenMod>0</optGenMod>
    <optFarmRestrictions>0</optFarmRestrictions>
    <cmbFRAction>Reject</cmbFRAction>
    <optDisease>0</optDisease>
    <txtDReasonCode>2</txtDReasonCode>
    <optWithdrawl>0</optWithdrawl>
    <txtWithdrawl>3</txtWithdrawl>
    <optABM>0</optABM>
    <txtCompliance>3</txtCompliance>
    <optForm>1</optForm>
  </Fields>

И для этого я использую:

    Dim _ControlValueCollections = From _ControlValueCollection In _Xmlx.Descendants("Fields") _
                                  Select _Qstn1Response = _ControlValueCollection.Element("typeQtyRadioButtonList").Value, _
                                         _Qstn2Response = _ControlValueCollection.Element("optHaulierDetCheck").Value, _
                                         _Qstn3Response = _ControlValueCollection.Element("optGenMod").Value, _
                                         _Qstn4Response = _ControlValueCollection.Element("optFarmRestrictions").Value, _
                                         _Qstn5Response = _ControlValueCollection.Element("optDisease").Value, _
                                         _Qstn6Response = _ControlValueCollection.Element("optWithdrawl").Value, _
                                         _Qstn7Response = _ControlValueCollection.Element("optABM").Value, _
                                         _Qstn8Response = _ControlValueCollection.Element("optForm").Value

    For Each _ControlValueCollection In _ControlValueCollections

... Исключая реализацию цикла For Each ....

Итак, я поставил точку останова для каждого, и в коллекции нет элементов. Я что-то упустил?

РЕДАКТИРОВАТЬ: Ответ был, конечно, что я использовал XElement, а не XDocument.

1 Ответ

1 голос
/ 20 июля 2011

_Xmlx.Descendants("Fields") ищет элементы-потомки с именем Fields XContainer _Xmlx.Если вы сделали XDocument _Xmlx = XDocument("input.xml");, то ваш XContainer _Xmlx имеет единственный элемент-потомок с именем Fields, и ваш код будет работать.Если вы сделали XElement _Xmlx = XElement.Load("input.xml");, то переменная _Xmlx сама является элементом "Fields".

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