こんにちは。野方です。

(2014年06月21日 07:25), matuaki wrote:
> matuakiです。
> 
> このサービスが出しているXMLをFILTERXML関数が理解できていないみたいです。
> 
> =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
> で取得したXMLで
> 
> <geocode xmlns="http://finds.jp/ts";
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
> 
> の部分を
> 
> <geocode>
> 
> に変更するとFILTERXML関数は値を読み込みました。
> (式は=FILTERXML(A1,"//geocode/result/latitude")に変えましたが)

おお!ホントですね!
普通に上からたどっていっても、きちんと緯度が取り出せました。

XML名前空間(xmlns)が怪しそうというので、一つずつ消してみたところ
「xmlns="http://finds.jp/ts"」が入ってるとパースできないようです。

もしかして、名前空間は指定してあるけど、そこにスキーマがないから、
それに従って処理できない?


> この現象が、XMLを出している側の問題かCalcの関数の方に問題があるのか、わ
> たしはよく分かりません。

「XML名前空間を指定していると、それにしたがって処理しようとするので、元
のXMLの指定が間違ってるとコケる」と仮説を立ててみたのですが、合ってるか
どうかは改めてdiscussで尋ねたほうがいいかもですね。

ありがとうございます。



(2014年06月21日 07:25), matuaki wrote:
> matuakiです。
> 
> このサービスが出しているXMLをFILTERXML関数が理解できていないみたいです。
> 
> =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
> で取得したXMLで
> 
> <geocode xmlns="http://finds.jp/ts";
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
> 
> の部分を
> 
> <geocode>
> 
> に変更するとFILTERXML関数は値を読み込みました。
> (式は=FILTERXML(A1,"//geocode/result/latitude")に変えましたが)
> 
> この現象が、XMLを出している側の問題かCalcの関数の方に問題があるのか、わ
> たしはよく分かりません。
> 
> 参考までに。
> 
> (2014年06月20日 19:10), Jun NOGATA wrote:
>> こんにちは。野方です。
>>
>> LibreOffice 4.2から入ったCalcのWEBSERVICE関数を使って、Web APIにアクセ
>> スして、返ってきたXMLからFILTERXML関数を使って値を取り出そうとしていま
>> すが、うまく取り出すことができません。
>>
>> 使っているWeb APIは、こちらです。
>>
>> - 簡易ジオコーディングサービス / Finds.jp Webサービス: http://www.finds.jp/wsdocs/geocode/
>>
>> 市町村コードを指定してアクセスすると緯度経度がXMLで返ってきます。
>> 大阪市北区(27127)なら、こんな感じでアクセスすると緯度経度が返ってきます。
>>
>> - http://www.finds.jp/ws/geocode.php?mcode=27127
>>
>> 試しにA1セルとA2セルに
>>
>> A1セル =WEBSERVICE("http://www.finds.jp/ws/geocode.php?mcode=27127";)
>> A2セル =FILTERXML(A1,"//latitude")
>>
>> と書いて試しましたが、#VALUEエラーになってしまいます。
>>
>> XPathをあまり理解していないので書き方が悪いのかと思い、Livedoorのお天気
>> RSSを使って試したところ
>>
>> - http://weather.livedoor.com/forecast/rss/area/270000.xml
>>
>> A1セル =WEBSERVICE("http://weather.livedoor.com/forecast/rss/area/270000.xml";)
>> A2セル =FILTERXML(A1,"//item[3]/title")
>>
>> こちらは、うまくtitle要素の値を取り出すことができました。
>>
>> ちょっと、よくわからなくなってきたのですが、FILTERXMLのXpathをどういう
>> 風な書き方をすると値を取り出すことができるのでしょうか。
>> 「これを見ろー」でもいいので、なにか情報ありましたら教えてください。
>>
> 
> 


-- 
野方 純 (NOGATA,Jun) - mail: noga...@gmail.com
                     - web: http://www.nofuture.tv/diary/

-- 
Unsubscribe instructions: E-mail to users+unsubscr...@ja.libreoffice.org
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/ja/users/
All messages sent to this list will be publicly archived and cannot be deleted

メールによる返信