野方です。 メールの前後を入れ替えてます。 2014年6月21日 14:08 Eizi TOYODA <[email protected]>: > FILTERXML(A1,"//*[name()='latitude']") > > 等としたら結果が返りませんかね。
返ってきました! > filterxml > は使ったことがありませんが、症状からすると、名前空間を指定していない要素がXpathにあっても、ドキュメントの同名の要素とは別物扱いされているように思います。 ということは、 - 名前空間に要素が無いので指定しているつもりでも別の要素として扱われていた。 結果、見つからなかった。 - 「name()」を使うと、名前空間に頼らず直接ドキュメントの要素を指定できる。 (だから結果が返ってきた) という認識で合ってますでしょうか? 2014年6月21日 14:08 Eizi TOYODA <[email protected]>: > filterxml > は使ったことがありませんが、症状からすると、名前空間を指定していない要素がXpathにあっても、ドキュメントの同名の要素とは別物扱いされているように思います。 > > FILTERXML(A1,"//*[name()='latitude']") > > 等としたら結果が返りませんかね。 > > 豊田英司 > from android phone > > 2014/06/21 9:20 "Jun NOGATA" <[email protected]>: >> >> こんにちは。野方です。 >> >> (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: [email protected] >> - web: http://www.nofuture.tv/diary/ >> >> -- >> Unsubscribe instructions: E-mail to [email protected] >> 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 >> > -- 野方 純 (NOGATA,Jun) - mail: [email protected] - web: http://www.nofuture.tv/diary/ -- Unsubscribe instructions: E-mail to [email protected] 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
