|
|
|
| Есть файл test.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<page>
<image name = "img1.gif" description = "This is image1" size = "100 KB" dimmensions = "440x330x24b">Image1</image>
<image name = "img2.gif" description = "This is image2" size = "200 KB" dimmensions = "450x330x24b">Image2</image>
<image name = "img3.gif" description = "This is image3" size = "300 KB" dimmensions = "460x330x24b">Image3</image>
</page>
|
Я считываю с него данные с помощью ява-скрипт в файл test.htm
var tableElement = document.createElement("table");
tableElement.border = 1;
for (i=0;i<=2;i++)//Здесь вручную указываю количество строк (рисунков) в xml-документе
{
//Здесь формируются строки таблицы
}
| А как сделать, чтобы число строк (i) в xml-документе подсчитывалось для организации цикла автоматически (скриптом)?
Спасибо. | |
|
|
|
|
|
|
|
для: coloboc66
(14.08.2006 в 12:35)
| | думаю циклом while. я во Flash так делаю:
//story - файл хмл
var aNode:XMLNode = story.firstChild
//aNode - первый узел в хмл
var shag:Number = 0;
for (var aNode; aNode != null; aNode=aNode.nextSibling) {
//aNode.nextSibling - переход на следующий узел
data_arr[shag] = aNode.firstChild;
//данные пишутся в массив
shag++;
}
|
| |
|
|
|
|
|
|
|
для: AlexSol
(14.08.2006 в 13:18)
| | Так это код на ActionScript, что-ли? Какой-то синтаксис непривычный... | |
|
|
|
|
|
|
|
для: coloboc66
(14.08.2006 в 13:31)
| | да, на ActionScript. на JavaScript, сори, не знаю :( | |
|
|
|
|
|
|
|
для: AlexSol
(14.08.2006 в 13:40)
| | А где ж тут цикл while()? Я только for() вижу... | |
|
|
|
|
|
|
|
для: coloboc66
(14.08.2006 в 14:03)
| | сори, не тот код...
var t:XML = new XML('<a1>1</a1><a1>2</a1><a1>3</a1>');
var aNode:XMLNode = t.firstChild;
while (aNode != null) {
trace(aNode)
aNode=aNode.nextSibling
}
|
| |
|
|
|
|
|
|
|
для: coloboc66
(14.08.2006 в 12:35)
| |
<html>
<head>
<script>
var xmldoc = new ActiveXObject("msxml");
xmldoc.URL='test.xml';
var tableElement = document.createElement("table");
for(var i=0;i<xmldoc.root.children.length;i++)
{
if(xmldoc.root.children.item(i).tagName=='IMAGE')
{
//Здесь формируются строки таблицы
}
}
</script>
</head>
<body>
</body>
</html>
|
Это вроде тока для IE. Просто доп.пример
А можете написать как вы подключаете\загружаете файл
и т,д.
просто интересна тема. | |
|
|
|
|
|
|
|
для: RMW
(14.08.2006 в 15:06)
| | Ну не знаю, пока написал так:
xmlObj = xmlDoc.documentElement;
var tableElement = document.createElement("table");
tableElement.border = 1;
for( i=0;i<xmlObj.childNodes.length;i++)
{
//Здесь формируются строки таблицы
}
|
Наверное есть лучшее решение? Напишите, кто знает. Проблема в том, что я совсем не знаю всех этих childNodes, rowElement, getAttribute(), firstChild и т.д. В моем учебнике по ява-скрипт ничего этого нет. Или это DHTML? Короче- это элементы какого языка и где взять их описание?
to RMW: файл test.xml просто кладу в одну директорию с файлом test.htm Или что вас интересует? | |
|
|
|
|
|
|
|
|
для: AlexSol
(14.08.2006 в 16:20)
| | Хороший пример, но он не работает. Добрый дядя скрипт выложил, а работающий код не показал. Или я его не нашел.
...
var x = xmlDoc.getElementsByTagName('emperor');
...
for (j=0;j<x[0].childNodes.length;j++)//ошибку ИЕ показывает здесь: x[0]- требуется объект
...
|
| |
|
|
|
|
|
|
|
для: coloboc66
(14.08.2006 в 17:26)
| | не поверишь - все работает. проверь xml.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
</head>
<body>
<div id='writeroot'></div>
<script type="text/javascript">
function importXML()
{
if (document.implementation && document.implementation.createDocument)
{
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.onload = createTable;
}
else if (window.ActiveXObject)
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.onreadystatechange = function () {
if (xmlDoc.readyState == 4) createTable()
};
}
else
{
alert('Your browser can\'t handle this script');
return;
}
xmlDoc.load("tt.xml");
}
function createTable(){
var x = xmlDoc.getElementsByTagName('emperor');
var newEl = document.createElement('TABLE');
newEl.setAttribute('cellPadding',5);
var tmp = document.createElement('TBODY');
newEl.appendChild(tmp);
var row = document.createElement('TR');
for (j=0;j<x[0].childNodes.length;j++){
if (x[0].childNodes[j].nodeType != 1) continue;
var container = document.createElement('TH');
var theData = document.createTextNode(x[0].childNodes[j].nodeName);
container.appendChild(theData);
row.appendChild(container);
}
tmp.appendChild(row);
for (i=0;i<x.length;i++){
var row = document.createElement('TR');
for (j=0;j<x[i].childNodes.length;j++){
if (x[i].childNodes[j].nodeType != 1) continue;
var container = document.createElement('TD');
var theData = document.createTextNode(x[i].childNodes[j].firstChild.nodeValue);
container.appendChild(theData);
row.appendChild(container);
}
tmp.appendChild(row);
}
document.getElementById('writeroot').appendChild(newEl);
}
importXML();
</script>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: AlexSol
(14.08.2006 в 17:38)
| | Извиняюсь- работает! Я сам- тормоз- неправильно XML-документ оформил... | |
|
|
|