読み込んだXMLのデータを1行10文字に整形して表示する
動作ブラウザ
win | mac | linux |
n7 | m1 | e5 | e6 | o7 | n7 | m1 | e5 | s1 | n7 | m1 | k3 |
○ | ○ | × | ○ | × | ○ | ○ | × | × | ○ | ○ | × |
ソース
【text.xml】
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<test id="test0">吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。
</test>
<test id="test1">ホラホラ、これが僕の骨だ、生きてゐた時の苦労にみちたあのけがらはしい肉を破つて、しらじらと雨に洗はれ、ヌックと出た、骨の尖。 それは光沢もない、ただいたづらにしらじらと、雨を吸収する、風に吹かれる、幾分空を反映する。 生きてゐた時に、これが食堂の雑踏の中に、坐つてゐたこともある、みつばのおしたしを食つたこともある、と思へばなんとも可笑しい。
</test>
</root>
【text.htm】
<script type="text/javascript">
<!--
/*==========================================================
//クロスブラウザ load関数
引数 : url XMLファイルのurl
func 読み込み成功時の起動関数名
戻値 : 読み込まれたXMLノードツリー
例 : loadFile( 'data.xml', func1 )
function func1(){alert('test')}
Support http://game.gr.jp/js/
*/
function loadFile(url,func)
{
if (window.ActiveXObject)
{
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = false
if(xmlDoc.load(url)){func(xmlDoc)}
} else if ( document.implementation &&
document.implementation.createDocument )
{
var xmlDoc = document.implementation.createDocument("","",null)
xmlDoc.onload = function (){func(xmlDoc)}
xmlDoc.load(url)
}
return xmlDoc
}
//読み込んだXMLのデータをもとにHTMLへ書き出す
function writeXMLData(xdoc)
{
//XML内の"test"というタグ名の配列のno番目のデータを取得する
var wkdatas = xdoc.getElementsByTagName("test")[no]
//書き出すためのdivを作っておく
var wkdiv= document.body.insertBefore(
document.createElement("div"), document.body.firstChild)
html = " "
for( i=0; 10 <= wkdatas.lastChild.data.length ; i++ )
{
wkdatas.lastChild.splitText(10)
html += wkdatas.childNodes[i].data
wkdiv.innerHTML += html + '<br>'
html = ""
} wkdiv.innerHTML += wkdatas.lastChild.data + '<br><br>'
wkdiv.style.fontFamily="nonospace"
}
//-->
</script>
<input type = "button"
value = "1つめ読み込み"
onclick= "no=0;loadFile('text.xml',writeXMLData)">
<input type = "button"
value = "2つめ読み込み"
onclick= "no=1;loadFile('text.xml',writeXMLData)">
読み込んだXMLのデータを1行10文字に整形して表示する