Googleマップを使用して2点間の距離を計算しようとしています。次のURLがあります。
http://maps.google.com/maps/api/directions/xml?language=fr&origin="+parm1+"&destination="+parm2+"&sensor=false
私はx++でxmlを管理するのはかなり初心者なので、URLから返されたxmlコードを取得し、それを解析して必要なデータ(距離ノード値)を抽出するにはどうすればよいですか。
Googleマップを使用して2点間の距離を計算しようとしています。次のURLがあります。
http://maps.google.com/maps/api/directions/xml?language=fr&origin="+parm1+"&destination="+parm2+"&sensor=false
私はx++でxmlを管理するのはかなり初心者なので、URLから返されたxmlコードを取得し、それを解析して必要なデータ(距離ノード値)を抽出するにはどうすればよいですか。
まず、この回答を参照してください。
次に、ここを見てください:
http://www.axaptapedia.com/Webservice
http://www.axaptapedia.com/XML
その方法は、AX のバージョンによって部分的に異なる場合があります。
Janが投稿した2つのリンクをいじってみて、一緒に作業できるはずの何かを手に入れました。「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);
}