2010-09-15 3 views
1

Я пытаюсь связать элемент CData с текстовым полем в коде. структура XML, как это:связать элемент cdata с текстовым полем C#

<Music> 
<Category> 
<Albums> 
<![CDATA[ 
    <AlbumData> 
     <Album> 
      <id>A1</id> 
      <Artist>artist 1</Artist> 
     </Album> 
     <Album> 
      <id>A2</id> 
      <Artist>artist 2</Artist> 
     </Album> 

    </AlbumData> 
    ]]> 
    </Albums> 

    </Category> 

</Music> 

Как я могу связать Исполнитель в текстовое поле? Я хочу сделать это двусторонней привязкой.

+0

Почему вы 'AlbumData' в разделе' CData'? –

+0

Также вы используете WinForms или WPF? –

+1

Я использую WPF, и данные поступают от клиента, поэтому я должен иметь дело с ним – phm

ответ

1

Чтобы получить XML, который имеет какое-то безумное причине был встроен в секцию CDATA Вашим клиентом, вы можете сделать следующее:

XDocument xd = XDocument.Load("music.xml") 
XElement albumData = XElement.Parse(xd.Root.Element("Category").Element("Albums").Value); 

Оттуда вы можете использовать XML в XmlDataProvider и использовать XPath чтобы получить имя художника и отобразить его в TextBox.

Я думаю, что в вашем случае (желание иметь двухсторонний доступ) в конечном итоге будет проще создать класс поддержки (модель и модель просмотра), а затем создать их из извлеченного XML. Из них вместо XmlDataProvider вы устанавливаете DataContext окна в viewmodel.

Смежные вопросы