Как получить атрибут XML с помощью XmlReader.Create? - PullRequest
0 голосов
/ 21 августа 2010

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

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> 

Я привязал это так, но media: thumbnail, очевидно, имеет значение null, потому что мне нужно как-то получить атрибут:

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"]);
}

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

1 Ответ

0 голосов
/ 22 августа 2010

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

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

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

...