Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| function getNodeValue(obj, tag) { if (obj.getElementsByTagName(tag)[0]) { if (obj.getElementsByTagName(tag)[0].firstChild) { return obj.getElementsByTagName(tag)[0].firstChild.nodeValue; } } return false; } var xmlList = jouwlijst.getElementsByTagName('user'); // <user><naam></naam><leeftijd></leeftijd></user> for (var i = 0; i < xmlList.length; i++) { var naam = getNodeValue(xmlList[i], 'naam'); var leeftijd = getNodeValue(xmlList[i], 'leeftijd'); } |
Zoiets ?
stel ik heb een x(ht)ml pagina met daarin 5 divs, en ik heb de 4e div nodig. dan zou je in jou geval het 4e array element moeten aanspreken. maar wat nou als iemand de volgorde van de divs verandert in je bron bestand, dan werkt het dus niet meer. als je nu alle divs een id geeft, en op id zoekt net als de getElementsById method dan werkt het altijd ongeacht de volgorde.
het probleem is alleen dat getElementsById (voor zover ik weet) alleen werkt op het document object en niet op bijvoorbeel xml DOM objecten. wat ik me dus afvraag is of het mogelijk is om deze functie wel op andere objecten dan het document object werkend te krijgen. of dat er (behalve zelf een search functie te maken) alternatieve methoden zijn die hetzelfde resultaat opleveren.
Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition
Nee hij bedoelt toch echt getElementById geloof ik.Hacku schreef op zondag 29 oktober 2006 @ 21:12:
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 function getNodeValue(obj, tag) { if (obj.getElementsByTagName(tag)[0]) { if (obj.getElementsByTagName(tag)[0].firstChild) { return obj.getElementsByTagName(tag)[0].firstChild.nodeValue; } } return false; } var xmlList = jouwlijst.getElementsByTagName('user'); // <user><naam></naam><leeftijd></leeftijd></user> for (var i = 0; i < xmlList.length; i++) { var naam = getNodeValue(xmlList[i], 'naam'); var leeftijd = getNodeValue(xmlList[i], 'leeftijd'); }
Zoiets ?
Ik weet niet of het kan, maar anders is het heel eenvoudig op te lossen met een functie die het document teruggeeft. Heb ik zelf ooit eens gebruikt in een Fx extensie, waar je bij addEventListener callbacks nooit rechtstreeks bij het document kunt komen.
1
2
3
4
5
6
7
8
9
10
11
| function get_document(event) { var elm = event.target; while (elm.nodeName.toLowerCase() != '#document') { elm = elm.parentNode; } return elm; } |
Ik ontken het bestaan van IE.
Levert onder meer op:
http://www.quirksmode.org/dom/importxml.html
Heb je hier iets aan?
Je zou dus inderdaad de XML kunnen parsen naar een (X)HTML-DOM of zelf door alle elementen heenlopen en de ID attribuut-waarden vergelijken.
Intentionally left blank
hoe kan ik dan mijn xml naar een (X)HTML-DOM omzetten voordat ik mijn xml in mijn webpagina plak (of stel ik hier een domme vraag)?
Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition
Beter is echter om gewoon XPath te gebruiken om je elementen te selecteren. Op die manier kun je ieder element met wat voor attribuut dan ook selecteren:
1
| *[@id='blaat'] |
is XPath binnen javascript te gebruiken? ik haal namelijk mijn xml op dmv javascript. de xml zit dus verpakt in objecten binnen javascript en daar worden ze ook verwerkt. ik koppel dmv javascript de juiste nodes aan mijn xhtml document. ik weet dus niet of ik XPath kan gebruiken om de juiste elementen uit mijn xml te selecteren.
*edit:
ik heb net ff snel gezocht en ik ben erachter dat je binnen javascript met de selectNodes() functie op een xmlobject dmv een XPath expressie een xml document kan doorzoeken. (correct me if i'm wrong)
[ Voor 17% gewijzigd door tombo_inc op 01-11-2006 19:44 ]
Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition
Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin
heb je dan mssn een andere suggestie, behalve zelf een search functie te schrijven.
Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| var XPath = { selectNodes: function(query, contextNode) { if ( Navigator.IS_IE ) { return contextNode.selectNodes(query); } else { var evaluator = new XPathEvaluator(); var result = evaluator.evaluate(query, contextNode, null, XPathResult.ORDERED_NODE_TYPE, null); var nodes = []; if ( result ) { while ( true ) { var node = result.iterateNext(); if ( node === null ) { break; } nodes.push(node); } } return nodes; } }, selectSingleNode: function(query, contextNode) { if ( Navigator.IS_IE ) { return contextNode.selectSingleNode(query); } else { var evaluator = new XPathEvaluator(); var result = evaluator.evaluate(query, contextNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); return result ? result.singleNodeValue : null; } } }; |
Misschien heb je hier wat aan. Alleen IE heeft een eigen manier, de andere browsers voldoen allemaal aan de DOM standaard dacht (hoop) ik.
[ Voor 3% gewijzigd door Michali op 02-11-2006 08:31 ]
je kan toch gewoon doen:
1
2
3
4
5
6
7
| var bla = xmldoc.getElementsByTagName('naam')
for (var i in bla) {
if(i.id == 'datgene wate je zoekt') {
return i;
}
}
return false; |
[ Voor 0% gewijzigd door Tsjilp op 02-11-2006 09:49 . Reden: ==, maar dan wel de goeie ]
Raar... Is zo gek nog niet