2016-06-06 9 views
0

Ich versuche Wert von URL zu extrahieren, die in Gehäuse-Tag so etwas wie dies im Grunde URL eines Bildes ist:Extrahieren url Wert aus XML-Gehäuse-Tag mit C#

<enclosure url="http://s3-us-west-1.amazonaws.com/s3cazinnet/2016/06/OZRK_KRAJINA_2016_5525.JPG?mtime=1465158486" length="" type="image/jpeg"> 

Ich will nicht, Sie stören mit ganzen Klassen, also poste ich nur Teile des Codes. Und das ist der Teil des Codes, wo ich versuche Wert von URL zu erhalten:

if (xmlNode[i].SelectSingleNode("enclosure:url", xmlNameSpaceManager) != null) 
{ 
    var Url = xmlNode[i].Attributes["url"].Value; 
    feedItem.Image = Url; 
} 

als ich laden mag, dass die Bilder in Listenansicht mit UrlImageViewHelper von Koush hier ist der Teil des Codes aus meiner FeedItemListAdapter Klasse:

var imageView = view.FindViewById<ImageView> (Resource.Id.ListviewImage); 
Koush.UrlImageViewHelper.SetUrlDrawable (imageView, feedItem.Image); 

Ich bekomme keinen Fehler, aber Bilder werden nicht in Listview angezeigt.

Antwort

0

Sie sollten wahrscheinlich über some basic XPath syntax, wie Ihr Ausdruck nicht viel Sinn machen, gehen und lesen - das Präfix sie ist auf der Suche nach einem Element mit dem Namen url, die einen Namespace im Namespace-Manager hat example. Klingt das richtig?

Angenommen, Ihr Element ist das Stammelement und es hat keinen Namespace (es handelt sich nicht darum, ob Sie uns nur ein Snippet gegeben haben), dann sollte der Ausdruck enclosure/@url lauten.

Sobald Sie das getan haben, müssen Sie eine Referenz auf das Ergebnis Ihrer Suche nach diesem Attribut halten. Im Moment werfen Sie es einfach weg und versuchen dann, das url Attribut auf einen beliebigen Knoten in Ihrer Liste zu bekommen.

Also, so etwas wie:

var url = xmlNode[i].SelectSingleNode("enclosure/@url", xmlNameSpaceManager); 
feedItem.Image = url.Value; 

Dies alles gesagt, LINQ to XML ist eine weit schönere API als der alte XmlDocument API und LINQ to XML ist viel schöner für XML als XPath Abfragen zu verwenden. Wenn du kannst, würde ich das untersuchen.

+0

Danke für die Antwort und Hinweise. Alles andere funktioniert gut Ich hatte nur ein Problem mit Bildern. Es ist ein kleines bisschen altes Projekt, das vor einigen Jahren begonnen hat und ich benutze den gleichen Weg weiter. Danke mein Herr. – Yupi