サイドバー付きでGoogleMapを表示させるものを、色々参考にしながら作成しています。
【動作サンプル】
http://6pesos.googlecode.com/svn/trunk/xml.html
↑このサンプルのようにxmlファイルを読み込む形をとりたいのですが、
【A.xml】
<markers>
<marker lat='xxx' lng='xxx' html='テスト' label='1'/>
</markers>
だと、きちんと表示できるのですが、
【B.xml】
<markers>
<marker>
<lat>xxx</lat>
<lng>xxx</lng>
<html>テスト</html>
<label>1</label>
</marker>
</markers>
だと、表示できず「documentElement は Null またはオブジェクトではありません」というエラーが出ます。
スクリプトの中身をいじってみたのですが、お手上げです。
■【B.xml】の書き方のXMLを読み込めるようにJavaScriptの中身を改変
■【A.xml】をエクセルのようなセル形式で編集する方法・ツール(もしくはエクセルでの編集・保存方法)
※Excel2003で「xmlリストとして開く」→「ファイル種類:XMLデータで保存」→「ワークシートの機能が失われる…と警告」→続行で保存→ブラウザで表示させると「引数の数が一致していません。または不正なプロパティを指定しています。」とエラーになります…。
どちらか分かる方いらっしゃいましたら、ご教授いただけないでしょうか。
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
とりあえず、最初のアドバイス
■【B.xml】の書き方のXMLを読み込めるようにJavaScriptの中身を改変
スクリプトの中に
var xml = GXml.parse(data);
の文がありますね。ここで参照するxmlオブジェクトを作っているわけです。
次の、var markers = xml.documentElement.getElementsByTagName("marker");
で、<marker>タグを持つノードをmarkers配列に格納してます。
それで、markers[i].getAttribute("xx")という参照は<marker>ノードの
Attributeの参照をしています。【B.xml】の書き方に対応するには、<marker>の
Attributeの参照じゃなく、<marker>の子供ノードの<lat>とか<lng>...のノード
を参照してそのnodeValueを取ればよいことになります。
例えば、
var point = new GLatLng(parseFloat(markers[i].getElementsByTagName("lat")[0].nodeValue,parseFloat(markers[i].getElementsByTagName("lng")[0].nodeValue))
みたいに。(言ってる事、解りますか?:以下余談)
あるいは、xpathというのを使う手法もありますが、GoogleMapsApiのGXmlの正体
が不明のため、自身ありません。おそらくActiveXObject("Msxml2.XMLHTTP")か、
XMLHttpRequest()が自動的に選ばれてるだけだと思うんですが...
xml.setProperty("SelectionLanguage", "XPath")
node_list = xmlobj.selectNodes(xpath_str);
target_node = node_list(0); // IE
か、
node_list = xml.evaluate(xpath_str,xml,null,XPathResult.ANY_TYPE,null);
target_node = node_list.iterateNext(); // IE以外
でできるのかなああ。
■【A.xml】をエクセルのようなセル形式で編集する方法・ツール(もしくはエクセルでの編集・保存方法)
別カテゴリーの質問になりますね。
-エクセルの機能については解りません(そもそもバージョンによって全然違う)
-エクセルでVBAマクロ作れば出来ます。
その場合も、単純にxmlをテキストファイルとして出力する方法
=>比較的、簡単だけど文字コードがShift-Jisになってしまう。
xmlオブジェクトを
Dim xml As MSXML2.DOMDocument
Set xml = CreateObject("MSXML2.DOMDocument")
で作って書き出す方法
=>読み込みはともかく書き出しはやったことない。出来ると思うけど、
MSDNのサイトを見ながら苦労する事になりそう...
この回答への補足
早速のお返事ありがとうございます。
とても分かりやすく説明していただいて、感謝いたします。
「【A.xml】をエクセルのようなセル形式で編集する方法・ツール(もしくはエクセルでの編集・保存方法)」は、確かに別カテゴリの質問ですね。
そのまま流れで質問してしまい、申し訳ありませんでした。
XMLの編集をどうこうするのは難しそうなので、スクリプトの中身を改変する方法をとりたいと思います。
教えていただいたように、XMLの読み込み部分を下記のように修正してみたのですが、表示させると「'documentElement' は Null またはオブジェクトではありません。」というエラーが出て表示できません。
GDownloadUrl("data/example-xml-.xml", function(data, responseCode) { // XMLファイルの名称・場所
if(responseCode == 200) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
var side_bar = document.getElementById("side_bar");
side_bar.innerHTML = "";
for (var i = 0; i < markers.length; i++) {
var point = new GLatLng(parseFloat(getElementsByTagName("lat")[0].nodeValue),parseFloat(markers[i].getElementsByTagName("lng")[0].nodeValue));
var label = markers[i].getElementsByTagName("label")[0].nodeValue;
var html = markers[i].getElementsByTagName("html")[0].nodeValue;
var marker = createMarker(point, label, html);
map.addOverlay(marker);
var side_barEntry = createside_barEntry(marker, label);
side_bar.appendChild(side_barEntry);
}
検索して調べてみたのですが、解決法が分かりませんでした…。
ご教授いただけましたら幸いです。
よろしくお願い致します。
追記です。
XMLは下記のようになっています。
<?xml version="1.0" encoding="UTF-8"?>
<markers>
<marker>
<lat>00.000000</lat>
<lng>00.000000</lng>
<label>●●●</label>
<html>▲▲▲</html>
</marker>
</markers>
どうぞよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- HTML・CSS ホームページのHTMLサイトマップを自動作成する方法を探しています。 1 2023/05/17 21:36
- WordPress(ワードプレス) ワードプレスにて .xmlファイルの使い方をご存知の方、よろしくお願いいたします。 2 2022/09/30 00:55
- その他(IT・Webサービス) 見たことのない形式で日付が表示されているのでそれを解析してほしい 3 2023/01/23 16:53
- HTML・CSS 疑似要素で背景画像に指定したSVG画像の色変更 2 2023/01/30 22:45
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TomcatでのHTMLの表示
-
struts使用時のソースの位置
-
StrutsのDataSourceの使い方。...
-
org.xml.sax.SAXParseException...
-
contextタグ内のsourceタグにつ...
-
ibatis初心者 設定エラー
-
Eclipseのアンインストールの仕方
-
Eclipseで、プロジェクト名のと...
-
html上で、バッチやexeファイル...
-
javaクラスファイルをEclipseで...
-
Eclipse・プロジェクトで、フォ...
-
.jarファイルの中身って書き換...
-
正しいURL指定しているにもかか...
-
split関数で区切り文字がない場合
-
Eclipse「リフレッシュ」と「ク...
-
tomcat起動時エラー
-
ACCESSでタイトルバーを非表示...
-
classファイルについて
-
プログラム実行の際に、「ソー...
-
ActivePerlをインストールしよ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TomcatでのHTMLの表示
-
org.xml.sax.SAXParseException...
-
ibatis初心者 設定エラー
-
【Tomcatが突然動かなく...
-
Apache Tomcat/4.0.6 - HTTP St...
-
contextタグ内のsourceタグにつ...
-
struts使用時のソースの位置
-
Eclipse、Tomcat、Mysql で開...
-
System.exitをwebで使うと良く...
-
jspでこんなエラーが出ます
-
web.xmlでtaglib-locationを設...
-
eclipseのアンインストール
-
StrutsのDataSourceの使い方。...
-
ある1つのキーを複数のキーに
-
Java WebアプリケーションよりW...
-
tomcat7.0(404FOUND)へアクセス
-
Highslide JSのコントローラー...
-
TomcatでServletの配置場所を変...
-
Tomcatを再起動するとエラーと...
-
hibernate.cfg.xmlの配置場所に...
おすすめ情報