.NET > Obecné

XML z URL parsovani

(1/3) > >>

erdt.martin:
O5 zdravim,

mam toto xml: http://maps.google.cz/maps/geo?q=Na%20Bezdekove+1738&gl=cs&hl=cs&output=xml

potrebuji z nej vytahnout pouze udaje jako coordinates a u AddressDetails posledni polozku "Accuracy=\"8\""
presneji, pokud je Accuracy rovno 8, tak abych to pokracovalo a vytahlo to ty coordinates.

zkousim to takto:

--- Kód: C++ ---public string StahniXML(string sURL)        {            string sSouradnice = "";            XmlTextReader nactiXML = new XmlTextReader(sURL);            while (nactiXML.Read())            {                // zjisteni presnosti, pokud je mensi nez 8, nebereme                if (nactiXML.Name.EndsWith("Accuracy=\"8\""))                {                    // az bude nazev coordinates, uloz jeho hodnetu do promenne                    if (nactiXML.Name == "coordinates")                    {                        sSouradnice = nactiXML.ReadString();                        break;                    }                }                else                {                    continue;                }            }            return sSouradnice;        }
bohuzel to nefunguje, tedy vim i proc, protoze toto: nactiXML.Name.EndsWith("Accuracy=\"8\"") vraci pouze tento retezec "AddressDetails"... Uz si tady s tim hraju asi hodinu... :(

Mi.Chal.:
měl bys zjišťovat, jakého typu je přečtený element a brát hodnoty z value, viz třeba http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.read.aspx.

Pokud těch dat není hodně, tak bych to proste načetl do XmlDocument a prolezl DOM, můžeš ty data vytáhnout i přes XPath a nemusíš ručně procházet všechno.

TC:

--- Kód: C++ ---using System;using System.Collections.Generic;using System.Text;using System.Xml;using System.Net; namespace Erdt{    class Program    {        static void Main(string[] args)        {            var sURL = "http://maps.google.cz/maps/geo?q=Na%20Bezdekove+1738&gl=cs&hl=cs&output=xml";             var xml = new XmlTextReader(sURL);            int accuracy=0;            for (; xml.Read(); )            {                if (xml.NodeType == XmlNodeType.Element && xml.Name == "AddressDetails")                {                    var attr = xml.GetAttribute("Accuracy");                    if (attr != null) int.TryParse(attr, out accuracy);                }                if (xml.NodeType == XmlNodeType.Element && xml.Name == "LatLonBox" && accuracy==8)                {                    var str=new string[]{"north","east","south","west"};                    foreach(var s in str)                    Console.WriteLine("{0} = {1}",s,xml.GetAttribute(s));                 }            }        }    }} 
Nyní jenom nezbývá než doufat, že slunéčko naše jasné, moderátor tohoto fóra,  nejvyšší osvícenost hlavní moderátor, a jeho všemocnost majitel fóra budou příznivě naloženi. Dojdou-li totiž k názoru, že publikovaná odpoveď je lepší než na jakou by se zmohlo slunéčko naše jasné moderátor tohoto fóra, nebo se nejvyšší osvícenost hlavní moderátor bude cítit ohrožen na mravnosti nestandardním slovem a nebo jeho všemocnost majitel fóra nebude spokojena s percepcí jeho fóra, tak ten příspěvek smažou.
Zdravim

TC

erdt.martin:
Děkuji pánové

TC:
A nebo jinak:


--- Kód: C++ ---using System;using System.Collections.Generic;using System.Text;using System.Xml;using System.Net; namespace Erdt{    class Program    {        static void Main(string[] args)        {            var sURL = "http://maps.google.cz/maps/geo?q=Na%20Bezdekove+1738&gl=cs&hl=cs&output=xml";             var xml = new XmlDocument();            WebClient client = new WebClient();            byte[] b = client.DownloadData(sURL);            var str = new System.Text.UTF8Encoding().GetString(b);            xml.LoadXml(str);            var accuracy = xml.DocumentElement["Response"]["Placemark"]["AddressDetails"].Attributes["Accuracy"].Value;            var north = xml.DocumentElement["Response"]["Placemark"]["ExtendedData"]["LatLonBox"].Attributes["north"].Value;            Console.WriteLine("north = {0} with accuracy {1}", north, accuracy);        }    }}  
Zdravim

TC

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi