2012-04-26 4 views
1

Я пытаюсь использовать Google Maps для вычисления расстояния между 2 points.I имеет следующий URL:Анализировать XML из URL

http://maps.google.com/maps/api/directions/xml?language=fr&origin="+parm1+"&destination="+parm2+"&sensor=false

Я очень новичок в управлении XML с й ++ так как я могу получить код xml, возвращаемый моим url, и проанализировать его, чтобы извлечь нужные мне данные (значения расстояния узла).

ответ

1

Во-первых, см. Это answer.

Тогда посмотрите здесь:

http://www.axaptapedia.com/Webservice

http://www.axaptapedia.com/XML

Как вы это может частично зависеть от вас AX версии.

+0

Большое спасибо, ответ был именно то, что я искал, я также прочитал axaptapedia главу о XML/WebServices, я использую AX 2009 –

0

Я играл с двумя связями Ян и получил то, с чем вы должны работать. Я заметил некоторую странность с «node.hasChildNodes()», где он сказал бы, что был ребенок, когда его не было, но у него был доступный текст. Посмотрите, сможете ли вы работать с этим.

static void XML_WebService_CodeGoogle(Args _args) 
{ 
    System.Net.WebClient webClient = new System.Net.WebClient(); 
    str google = "http://maps.google.com/maps/api/directions/xml?language=en&origin=85251&destination=46220&sensor=false"; 
    str retVal = webClient.DownloadString(google); 
    XMLDocument doc=XMLDocument::newXml(retVal); 


    XmlNamedNodemap  attributes; 
    XmlElement   root = doc.root(); 
    XmlNode    node = root.firstChild(); 

    str numOfSpaces(int _depth) 
    { 
     str spc; 
     int n; 
     ; 

     for (n=0; n<=_depth; n++) 
      spc+=' '; 

     return spc; 
    } 

    void dig(XmlNode _node, int _depth = 0) 
    { 
     XmlNode sib; 
     ; 

     if (_node == null) 
      return; 

     if (_node.hasChildNodes()) 
      info(strfmt("%1%2", numOfSpaces(_depth), _node.name())); 

     if (_node.hasChildNodes()) 
      dig(_node.firstChild(), (_depth+1)); 
     else 
      info(strfmt("%1[%2]", numOfSpaces(_depth), _node.innerText())); 

     sib = _node.nextSibling(); 

     if (sib) 
      dig(sib); 
    } 
    ; 

    dig(node); 
} 
+0

Он использует рекурсию для итерации по XML. Я не тестировал, если он работает на 100% правильно. На самом деле, я думаю, что последняя часть, где она повторяется над братьями и сестрами, может быть неправильной, но она бросает ее в бесконечный цикл, и я просто не успел поиграть с ней. –

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