2010-08-21 5 views
0

Я использую XmlReader.Create для извлечения данных из XML-файла RSS. Тогда я ставлю эти данные в DataSet и связывание его с ListView:Как получить атрибут XML с помощью XmlReader.Create?

XmlReader xmlReader = XmlReader.Create(this.RssUrl); 
XmlDataDocument xdoc = new XmlDataDocument(); 
xdoc.DataSet.ReadXml(xmlReader, XmlReadMode.InferSchema); 

Проблема состоит в том, что одна из областей я пытаюсь получить в атрибуте. Как получить атрибут «url» из «media: thumbnail» ниже?

<item> 
    <title>Some Title</title> 
    <description>Content goes here...</description> 
    <link>http://www.mydomain.com?id=439</link> 
    <guid>453252362</guid> 
    <pubDate>Sat, 21 Aug 2010 11:00:00 GMT</pubDate> 
    <media:thumbnail url="http://www.mydomain.com/catalog/1111tn.jpg" /> 
    <media:content url="http://www.mydomain.com/catalog/1111.jpg" /> 
</item> 

Я привязать его, как это, но СМИ: миниатюра пустой очевидно потому, что мне нужно, чтобы получить атрибут как некоторые:

void singleItem_DataBinding(object sender, System.EventArgs e) 
{ 
    Label singleItem = (Label)sender; 
    singleItem.Text = String.Format(@"      
     <div class=""rlvI content""> 
      <div class=""image""> 
       <a href=""{0}""><img src=""{1}"" alt=""{2}""></a> 
      </div> 
      <p> 
       <span class=""title"">{2}</span><br /> 
       {3} 
      </p> 
     </div>", 
     ((singleItem.NamingContainer as RadListViewDataItem).DataItem as DataRowView)["link"], 
     ((singleItem.NamingContainer as RadListViewDataItem).DataItem as DataRowView)["media:thumbnail"], 
     ((singleItem.NamingContainer as RadListViewDataItem).DataItem as DataRowView)["title"], 
     ((singleItem.NamingContainer as RadListViewDataItem).DataItem as DataRowView)["description"]); 
} 

Может кто-нибудь помочь с этим?

+2

Не знаете, в чем вопрос. В любом случае, для любой работы Xml в C# мой совет - перейти на новый Linq 'XElement' api. Они намного проще, чем остальные. – 2010-08-21 19:02:14

+0

+1 для совета jdv. 'XmlReader' полезен, когда вам нужно читать * огромные * количества XML, но RSS-канал вряд ли будет очень большим. LINQ to XML FTW. –

+0

+1 для комментария jdv. Перейти к LINQ to XML! – davehauser

ответ

0

Как получить атрибут «url» из раздела «media: thumbnail» ниже?

Вам необходимо прочитать документ (while (xmlReader.Read() {...}), пока не получите элемент с атрибутом на нем. Затем вы можете использовать такие методы, как ReadAttributeValue.

В цикле чтения вы можете сопоставить тип узла, имя узла и пространство имен, чтобы убедиться, что у вас есть правильный элемент.

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