Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

XML

3 réponses
Avatar
Gloops
Bonjour tout le monde,

Je commence à me frotter à XML façon Javascript (pour sauvegarder les
paramètres de mon application, à part JSON c'est encore ce qu'on fait de
mieux, pas vrai ?) et on ne peut pas dire que ce début soit très glorieux.

Voilà ce que j'ai envoyé comme sauce dans un fichier js :

x = WScript.CreateObject("Microsoft.XMLDOM");
// ben quoi, c'est pour exécuter avec un outil Microsoft
x.loadXML("<root><param>des figues des bananes des noix</param></root>");
var text = x.childNodes[0].OuterXml;

WScript.Echo(text);


Et ça m'affiche une chaîne vide.
Je trouve que ça ne nourrit pas son homme.

Si je mets des guillemets autour ça consent à se transformer en "undefined".

Quelqu'un peut-il comprendre que je n'y pige que dalle ?

3 réponses

Avatar
Gloops
Le 24/01/2016 16:33, Gloops a écrit :
Bonjour tout le monde,

Je commence à me frotter à XML façon Javascript (pour sauvegarder les
paramètres de mon application, à part JSON c'est encore ce qu'on fait de
mieux, pas vrai ?) et on ne peut pas dire que ce début soit très glorieux.

Voilà ce que j'ai envoyé comme sauce dans un fichier js :

x = WScript.CreateObject("Microsoft.XMLDOM");
// ben quoi, c'est pour exécuter avec un outil Microsoft
x.loadXML("<root><param>des figues des bananes des noix</param></root>");
var text = x.childNodes[0].OuterXml;

WScript.Echo(text);


Et ça m'affiche une chaîne vide.
Je trouve que ça ne nourrit pas son homme.

Si je mets des guillemets autour ça consent à se transformer en
"undefined".

Quelqu'un peut-il comprendre que je n'y pige que dalle ?





Et alors maintenant je me réfère
https://msdn.microsoft.com/en-us/library/system.xml.xmlnode.haschildnodes%28v=vs.110%29.aspx

et à mon fichier j'ajoute :

var root = x.FirstChild;
WScript.Echo(root.HasChildNodes?"true":"false");

et il m'est répondu que root.HasChildNodes a la valeur Null ou n'est pas
un objet.

Ah bon, mais alors si sa propriété HasChildNodes a la valeur Null, je
fais comment pour admettre que root est un objet de type XmlNode ?
Avatar
Gloops
Le 24/01/2016 16:33, Gloops a écrit :
Bonjour tout le monde,

Je commence à me frotter à XML façon Javascript (pour sauvegarder les
paramètres de mon application, à part JSON c'est encore ce qu'on fait de
mieux, pas vrai ?) et on ne peut pas dire que ce début soit très glorieux.

Voilà ce que j'ai envoyé comme sauce dans un fichier js :

x = WScript.CreateObject("Microsoft.XMLDOM");
// ben quoi, c'est pour exécuter avec un outil Microsoft
x.loadXML("<root><param>des figues des bananes des noix</param></root>");
var text = x.childNodes[0].OuterXml;

WScript.Echo(text);


Et ça m'affiche une chaîne vide.
Je trouve que ça ne nourrit pas son homme.

Si je mets des guillemets autour ça consent à se transformer en
"undefined".

Quelqu'un peut-il comprendre que je n'y pige que dalle ?




J'ai fini par trouver des éléments là :

http://www.aliasdmc.fr/coursjavas/cours_javascript168.html

d'où il ressort que InnerXml et OuterXml ne servent pas dans ce
contexte, à la place il convient de s'intéresser à nodeValue.

Une chose me surprend encore : j'ai ajouté du texte dans un nœud, le
résultat est différent selon que je le place avant ou après le nœud
enfant. C'est le premier qui apparaît qui prime, je ne réussis pas à
accéder à l'autre. ça ne devrait pas m'empêcher de réaliser ce que j'ai
en tête pour l'instant, mais il faudra que je finisse par comprendre.

Mon fichier est devenu ça :

shell = WScript.CreateObject("WScript.Shell");
x = WScript.CreateObject("Microsoft.XMLDOM")
x.loadXML("<root><param chose='bidule'>des figues des bananes des
noix</param>du texte ici</root>");
var text = "";
var N = x.childNodes;
WScript.Echo(N.length);
en = N[0];

var root = x.documentElement;
WScript.Echo(root.nodeName);
WScript.Echo(root.hasChildNodes?"true":"false");

e1 = root.childNodes[0];

if(e1.nodeType==3 || e1.nodeType==4){
WScript.Echo(e1.nodeValue);
}else{
WScript.Echo("Ce n'est pas une fille c'est un noeud");
// plus qu'un noeux, non ?
}
WScript.Echo("e1 vaut " + e1.nodeValue);

WScript.Echo(e1.hasChildNodes?"e1 : true":"e1 : false");

e2 = e1.childNodes[0];

WScript.Echo(e2.nodeValue);
Avatar
Gloops
Le 24/01/2016 18:28, Gloops a écrit :
Une chose me surprend encore : j'ai ajouté du texte dans un nœud, le
résultat est différent selon que je le place avant ou après le nœud
enfant. C'est le premier qui apparaît qui prime, je ne réussis pas à
accéder à l'autre. ça ne devrait pas m'empêcher de réaliser ce que j'ai
en tête pour l'instant, mais il faudra que je finisse par comprendre.



ça y est, il s'avère que le texte est un élément enfant du nœud auquel
il appartient.

Ainsi sur le contenu

<root>
<param chose='bidule'>
des figues des bananes des noix
</param>
du texte ici
</root>");

avec le code ci-dessous j'obtiens ce résultat :
___________
root
param
<.>
#text
des figues des bananes des noix
#text
du texte ici
___________
ce qui à l'indentation près correspond bien au texte qu'on peut y trouver.



x = WScript.CreateObject("Microsoft.XMLDOM")
x.loadXML("<root><param chose='bidule'>des figues des bananes des
noix</param>du texte ici</root>");

var root = x.documentElement;
WScript.Echo(root.nodeName);

decrit(root);

try{
WScript.StdIn.Read(1);
}catch(exception){}

function decrit(prt)
{
var e = new Enumerator(prt.childNodes);
for(; !e.atEnd(); e.moveNext()){
WScript.Echo(e.item().nodeName);
if(e.item().nodeType == 3 || e.item().nodeType == 4)
{
WScript.Echo(e.item().nodeValue);
}
else
{
WScript.Echo("<.>");
}
if(e.item().hasChildNodes)
{
decrit(e.item());
}
}
}


function test()
{
WScript.Echo("Nombre d'éléments sous la racine : " +
root.childNodes.length);
WScript.Echo("Le premier : " + root.childNodes[0].nodeValue);
WScript.Echo("avec " + root.childNodes[0].childNodes.length + " enfants");
WScript.Echo("Le deuxième : " + root.childNodes[1].nodeValue);
e1 = root.childNodes[0];

if(e1.nodeType==3 || e1.nodeType==4){
WScript.Echo(e1.nodeValue);
}else{
WScript.Echo("Ce n'est pas une fille c'est un noeud");
}
WScript.Echo("e1 vaut " + e1.nodeValue);

WScript.Echo(e1.hasChildNodes?"e1 : true":"e1 : false");

e2 = e1.childNodes[0];

WScript.Echo(e2.nodeValue);
}