roadyMedlem sedan jan. 2002473 inlägg hur använder man för att plocka ut information från en xml-fil.
Har t.ex en xmlfil som ser ut såhär.
<?xml version="1.0" encoding="iso-8859-1"?>
<info>
<case id="001" working="1">
[red] <title>Destruct</title>
<desc>Vi testar ett fint exempel</desc>
<photo>name1.jpg</photo>
<photo>name1.jpg</photo>
<photo>name1.jpg</photo>[/red]
</case>
<case id="002" working="1">
[red] <title>Testing</title>
<desc>Mauching os for anotheront</desc>
<photo>name1.jpg</photo>
<photo>name1.jpg</photo>
<photo>name1.jpg</photo>[/red]
</case>
</info>
koden jag använder ser ut såhär...
var myXML;
myXML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = loadedXML;
myXML.load("cases.xml");
function loadedXML() {
for (i=0; i<myXML.firstChild.childNodes.length; i++) {
trace(myXML.firstChild.childNodes[i].nodeName);
trace(myXML.firstChild.childNodes[i].attributes.id);
trace(myXML.firstChild.childNodes[i].attributes.working);
}
}
problemet är att jag får inte ut xml:n som är röd. hur gör jag det, gör man såhär eller skall jag göra på något annat sätt osv.
DarrenMedlem sedan dec. 2002789 inlägg Testa med detta...
var myXML;
myXML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = loadedXML;
myXML.load("cases.xml");
function loadedXML() {
var children = myXML.firstChild.childNodes;
for (i=0; i<children.length; i++) {
trace(children[i].nodeName);
trace(children[i].attributes.id);
trace(children[i].attributes.working);
var caseChildren = children[i].childNodes;
for (a=0; a<caseChildren.length; a++) {
trace(caseChildren[a].nodeName);
}
}
}
roadyMedlem sedan jan. 2002473 inlägg funkade helt kanon... tummen upp :bire
nikoMedlem sedan juni 20022 599 inlägg Får jag passa på att ställa en följdfråga i samma tråd? När jag testar Darrens kod med samma XML-fil men provar:
trace(caseChildren[a].nodeValue);
istället för:
trace(caseChildren[a].nodeName);
.. så printar den alltid null ..? nodeType returnerar också "1" vilket enligt denna sida betyder att det inte är en textnod? Har jag missuppfattat nåt eller är det en bugg?
Använder Flash MX.
Vill du ha ut värdet från <photo>?
trace(caseChildren[a].firstChild);
trace(caseChildren[a].nodeType); blir 1
trace(caseChildren[a].firstChild.nodeType); blir 3
Property (read-only); takes or returns a nodeType value, where 1 is an XML element and 3 is a text node.
nikoMedlem sedan juni 20022 599 inlägg OK! Nu fattar jag. Jag måste skriva caseChildren[a].firstChild.nodeValue för att få ut nodvärdet? I min logik så borde det räcka med caseChildren[a].nodeValue eftersom det ju inte finns nån "child". Men bara det funkar så .. Tack.
DarrenMedlem sedan dec. 2002789 inlägg
niko skrev:
OK! Nu fattar jag. Jag måste skriva caseChildren[a].firstChild.nodeValue för att få ut nodvärdet? I min logik så borde det räcka med caseChildren[a].nodeValue eftersom det ju inte finns nån "child". Men bara det funkar så .. Tack.
Din logik är det inget fel på iaf... Jag tycker likadant. Men att det inte fungerar som du och jag vill, det är en annan femma. :e
nikoMedlem sedan juni 20022 599 inlägg Ja, jo .. som sagt inte direkt intuitivt men bara man vet vad som gäller.
En ny (sista) fråga:
Finns det möjlighet att få XML-objektet att återge å,ä,ö korrekt (både i nod- och attributvärden)? Den verkar inte bry sig så mycket om vilken encoding jag anger. Finns dessa tecken dessutom i ett attributvärde så avbryts parsningen (i koden ovan), vilket inte är bra.
Jag testar just nu möjligheten att använda Flash som en tilläggsklient mot ett existerande system och det skulle vara bra om det fungerade rakt av utan att man behövde specialanpassa XML:en för Flash.
<?xml version="1.0" encoding="iso-8859-1"?>
och System.useCodePage = true i första framen i flashen skall nog fixa biffen.
nikoMedlem sedan juni 20022 599 inlägg
Rödalacket skrev:
System.useCodePage = true i första framen i flashen skall nog fixa biffen
:)
Japp, det funkade. Det var sista pusselbiten, nu har jag vad jag behöver. Tack.