Autor Zpráva
Chlebník
Profil *
Zdravím mám, trošku problém. Začínám něco tvořit, a potřebuju poradit. Jsem úplný začátečník, a snažím se hledat všude možně, ale narazil jsem na jednu věc se kterou si nevím rady.

Mám jeden soubor HTM - hlavní a pomoci něho potřebuju do proměnné XMLobj načíst externí soubor XML. To se mi podařilo, ale pak skouším různé operace, změna atributu.... atd... to mi celkem jde...
Ale potřebuji vědět jak doplním další položku.

Ve funkci : function doplnXML() právě testuju. Chtěl bych vytvořit novou položku
1) na úrovni rodina, třeba aby rodina byla (0), a přátelé (1)
2) pak jak třeba tu rodina smazat
3) pak třeba jak vytvořím položku na úrovni otec/matka/deti, třeba stryc(3) a teta(4) a do toho opět jmeno....

Prosím moc prosím.

Posílám zdroj s názvem : pokus-xml.hta
<html>

<head>
<title>XML Ukázka</title>

<script language="JavaScript"><!------------

var xmlDoc;
var xmlObj;


function saveXML(){
alert(xmlObj.xml);
xmlDoc.save("D:\Data\Html\xmltest-kopie.xml");
}

function loadXML()
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.onreadystatechange=verifyfunc;
xmlDoc.load('xmltest.xml');
xmlObj=xmlDoc.documentElement;
}

function ZobrazXML()
{
alert(xmlObj.xml);
}

function ZpracujXML()
{
// Otec a matka
var t= "Otec: " + xmlObj.childNodes(0).text + " (narozen " + xmlObj.childNodes(0).getAttribute("roknar") + ") "
t += "Matka: " + xmlObj.childNodes(1).text + " (narozena " + xmlObj.childNodes(1).getAttribute("roknar") + ") "
t += "Děti: "
var i;
for(i=0; i<xmlObj.childNodes(2).childNodes.length; i++ ) {
t += " " + xmlObj.childNodes(2).childNodes(i).text + " (narozen " + xmlObj.childNodes(2).childNodes(i).getAttribute("roknar") + ") "
}
alert(t);
}

function verifyfunc()
{
if (xmlDoc.readyState != 4)
{
return false;
}
}
function doplnXML()
{
xmlObj.childNodes(0).setAttribute("jmeno","pokus na jmeno");
xmlObj.childNodes(0).removeAttribute("roknar");
alert(xmlObj.xml);
}
//-------------------------------->
</script>

</head>

<body bgcolor="lightblue" text="#000000">

<h2>Ukázka práce s XML souborem</h2>
<form>
<input type="button" name="b0" value="Nahrát XML Soubor" onClick="loadXML()"><br><br>
<input type="button" name="b1" value="Ukaž obsah XML souboru" onClick="ZobrazXML()"><br><br>
<input type="button" name="b2" value="Ukaž zpracovaná XML data" onClick="ZpracujXML()"><br><br>
<input type="button" name="b3" value="Dopln neco do XML data" onClick="doplnXML()"><br><br>
<input type="button" name="b4" value="Ulož XML data" onClick="saveXML()"><br><br>
</form>

</body>
</html>


a zdroj XML s názvem xmltest.xml
<?xml version="1.0" encoding="Windows-1252" ?>
<rodina>
<otec roknar="1964">Jan Novák</otec>
<matka roknar="1969">Jana Nováková</matka>
<deti>
<dite pohlavi="M" roknar="1993">Petr Novák</dite>
<dite pohlavi="M" roknar="1995">Michal Novák</dite>
<dite pohlavi="Z" roknar="1998">Adéla Nováková</dite>
</deti>
</rodina>[/b][b][b][/b][i][/i]
peta
Profil
"Vložit nový CHILDNODES do XMLdoc v Java Scriptu prosím."
childNodes = seznam vsech primych objektu pod nejakym hlavnim, parentNode (otec a jeho deti)

tvuj problem resi jakpsatweb - javascript - prace s pole, objekty
Dobre je pouzit treba
t = ''; for (i in jmenoobjektu) {t+=i+'='+jmenoobjektu[i];} alert(t);
pro vypsani obsahu objektu

Abys to pochopil.
Objekt Math pro matematicke funkce
x = Math.childNodes
x[0] -> 'sin'
x[1] -> 'cos'
Zapis tohoto objektu (associativniho pole) je treba:
var Math = {
'sin' : function(z) {return z*1.15; /*nejaky vypocet*/},
'cos' : function(z) {return z*1.15; /*nejaky vypocet*/}
}
nebo
var Math;
Math['sin'] = function(z) {return z*1.15; /*nejaky vypocet*/};

pokud chces teda pridat do Math nejake dite, pak se s tim pracuje jako s polem:
Math['dite'] = function(z) {return z*4;};
alert(Math.dite(1));
var i,x,t; x = Math.childNodes; t = ""; for (i in x) {t=i;} alert(i);
... prvni alert by mel vypsat 4, druhy 'dite', jestli jsem neudelal chybku :)

Nej literatura k zakladnim funkcim je ta prvni
http://www.volny.cz/peter.mlich/www.htm#msub8

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: