CSharp Как сгенерировать/разобрать несколько XElements из строки

У меня есть XElement, и мне нужно добавить к нему дополнительные элементы из строки. Строка содержит несколько элементов xml, которые мне нужно проанализировать. Я пробовал и XDocument.Load, и XElement.Parse, но получаю ошибки. Содержимое файла следующее:

<menu id="a">
  <menuItem keyID="0">
    <command>test</command>
  </menuItem>
  <menuItem keyID="0">
    <command>test</command>
  </menuItem>     
</menu>
<menu id="b">
  <menuItem keyID="0">
    <command>test</command>
  </menuItem>
  <menuItem keyID="0">
    <command>test</command>
  </menuItem>     
</menu>    
<ecs>
  <areas>
    <area longitudeFrom="20.35" longitudeTo="20.37" />
    <area longitudeFrom="20.44" longitudeTo="20.46" />
    <area longitudeFrom="20.22" longitudeTo="20.25" />
  </areas>
</ecs>

Как лучше всего прочитать все элементы из этой строки и добавить их в существующий XElement?


person Shahid    schedule 03.02.2010    source источник
comment
А ошибки.....?   -  person    schedule 03.02.2010


Ответы (1)


если это весь файл, это нормально XMLDocument.Load выдавать вам ошибки. Чтобы XML загружался, он должен иметь один такой корень. Если ошибка в чем-то другом, отправьте сообщение об ошибке

<root>
    <menu id="a">
      <menuItem keyID="0">
        <command>test</command>
      </menuItem>
      <menuItem keyID="0">
        <command>test</command>
      </menuItem>     
    </menu>
    <menu id="b">
      <menuItem keyID="0">
        <command>test</command>
      </menuItem>
      <menuItem keyID="0">
        <command>test</command>
      </menuItem>     
    </menu>    
    <ecs>
      <areas>
        <area longitudeFrom="20.35" longitudeTo="20.37" />
        <area longitudeFrom="20.44" longitudeTo="20.46" />
        <area longitudeFrom="20.22" longitudeTo="20.25" />
      </areas>
    </ecs>
</root>
person IordanTanev    schedule 03.02.2010
comment
XDocument.Load жалуется на отсутствие корневого элемента Теперь я добавил корневой элемент, но теперь он говорит [System.ArgumentException] = {Не пробельные символы не могут быть добавлены к содержимому.} И на самом деле строка, содержащая xml, слишком велика, поэтому я просто разместил образец здесь. Могу ли я в любом случае разобрать его с корневым элементом или без него? - person Shahid; 03.02.2010
comment
Что касается новой ошибки, вы уверены, что за пределами xml нет текста, и xml действителен. На замечание о чтении xml без рута я не думаю, что это возможно - person IordanTanev; 03.02.2010