Avatar billede terra Nybegynder
01. marts 2004 - 17:05 Der er 15 kommentarer og
2 løsninger

Hente en variabel fra en xml string til JS

Håper at noen kan hjelpe her.
Hvordan kan jeg hente 'vriabel_som_jeg_ska_bruge' fra en sting som ser sådan:

// Jeg henter det som en string til JS:
<?xml version="1.0" encoding="utf-8" ?>
  <string xmlns="http://domenenavn.dk/system">vriabel_som_jeg_ska_bruge</string>

Og ska ha 'vriabel_som_jeg_ska_bruge' ud av det.
Any Ideas?

Terra
Avatar billede roenving Novice
02. marts 2004 - 01:59 #1
Har du det præcist som beskrevet i en string ?-)

<script type="text/javascript">
var str = '<?xml version="1.0" encoding="utf-8" ?>  <string xmlns="http://domenenavn.dk/system">vriabel_som_jeg_ska_bruge</string>';

var reg = /<string.*>(.*)<\/string>/g;
var minVar = str.match(reg);
for(i=0;minVar.length>i;i++){
  minVar[i] = minVar[i].replace(reg, "$1");
}
alert(minVar)
</script>
Avatar billede roenving Novice
02. marts 2004 - 02:18 #2
Og denne giver flere tilbage:

<script type="text/javascript">
var str = '<?xml version="1.0" encoding="utf-8" ?>  <string xmlns="http://domenenavn.dk/system">vriabel_som_jeg_ska_bruge</string><string xmlns="http://domenenavn.dk/system">variabel2_som_jeg_ska_bruge</string>';

var reg = />(\w*)<\/string>/g;
var minVar = str.match(reg);
for(i=0;minVar.length>i;i++){
  minVar[i] = minVar[i].replace(reg, "$1");
}
alert(minVar)
</script>
Avatar billede terra Nybegynder
02. marts 2004 - 17:45 #3
Mange tak for hjelpen ->  roenving
Det virker bra her;)

Det som er med variabler i 'strings' er at hver har et andet navn der.
Se nedenfor:

<script type="text/javascript">
var str = '<?xml version="1.0" encoding="utf-8" ?>  <string xmlns="http://domenenavn.dk/system">vriabel_som_jeg_ska_bruge</string><SecString xmlns="http://domenenavn.dk/system">variabel2_bruge</SecString>';

Jeg tror at jeg ska bruge:
var reg = /<string.*>(.*)<\/string>/g;
\\... og
var SecReg = /<SecString.*>(.*)<\/SecString>/g;
\\ there.

Lav et svar så skal jeg transmite points.
Hilsen Terra
Avatar billede roenving Novice
02. marts 2004 - 17:51 #4
Velbekomme '-)

-- har ikke lige tid til at lave det, men du kan vel lave et array af hvilke tags, du bruger, og så teste dem i en løkke ?-)
Avatar billede olebole Juniormester
04. marts 2004 - 18:10 #5
<ole>

Hvorfor ikke hente det med XML-DOM?

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.load( "fil.xml" );
var node = xmlDoc.getElementsByTagName("string")[0];
alert(node.text);

/mvh
</bole>
Avatar billede terra Nybegynder
06. marts 2004 - 01:14 #6
Tak for det <ole></bole> den er bare så.., genial.
Jeg har prøvd at acceptere svar til roenving men det ser ud at EXp systemet her har gått av hengslene ?:) og spm er åpen(?)

Så, tilbage til spm ...
Jeg har et problem med at:
Når jeg tester lokalt så alt virker OK.
Prøver at kjøre fra server blir den forkert.
I script Error boxen står det: 'Ingen tilgang' (?)

Jeg har prøvd at kjøre:
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

xmlhttp.open("GET", filenavn.xlm , false);
// if needed set header information
// using the setRequestHeader method
xmlhttp.onreadystatechange = function()

{
    if(xmlhttp.readyState == 4)
        alert("Finished loading!");
}

xmlhttp.send(null);

----
// også med getXmlHttpRequest();

Ovennevte og den biten fra -> olebole
Giver mig den samme error: 'ingen tilgang'
Jeg bruger IE så det bør gå bra efter beskriveln.

Vet ikke hva er det men det ser ud at den blir forkert i:
xmlDoc.load( "fil.xml" ); // med ingen tilgang (?)

Er det noen av jere som vet hva er det som skjer her?

Terra
Avatar billede olebole Juniormester
06. marts 2004 - 03:56 #7
Ja, du bruger et andet objekt, der skal behandles anderledes:

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var url = "http://www.domain.no/ ... ganzen shit ... /fil.xml";
xmlhttp.open("GET", url , false);
xmlhttp.onreadystatechange = function() {
    if(xmlhttp.readyState == 4) {
        var xmlDoc = xmlhttp.responseXML.documentElement;
        alert(xmlDoc.getElementsByTagName("string")[0].text)
    }
}
xmlhttp.send();

Husk at bruge den fulde sti (med 'http://' og det hele).

'xmlhttp.responseText' returnerer xml-dokumentet på tekst-form.
'xmlhttp.responseXML' returnerer xml-dokumentets DOM.
/mvh
Avatar billede olebole Juniormester
06. marts 2004 - 03:58 #8
PS: Skriver du URL'en direkte i dit open()-kald, skal den stå i gåseøjne ... og hedde '.xml' (ikke '.xlm')  ;o)
Avatar billede olebole Juniormester
06. marts 2004 - 04:02 #9
PPS: 'xmlhttp.responseXML.documentElement' returnerer dit XML-dokuments root-element ... '<dataset></dataset>' i eksemplet nedenfor:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<dataset>
<treeitem id="1" parid="0">
    <showinx>0</showinx>
    <isparent>1</isparent>
    <icon>file.gif</icon>
    <mytext>blabla 1</mytext>
</treeitem>

<treeitem id="2" parid="17">
    <showinx>0</showinx>
    <isparent>0</isparent>
    <icon>file.gif</icon>
    <mytext>blabla 2</mytext>
</treeitem>

<treeitem id="3" parid="0">
    <showinx>4</showinx>
    <isparent>0</isparent>
    <icon>file.gif</icon>
    <mytext>blabla 3</mytext>
</treeitem>
</dataset>
Avatar billede terra Nybegynder
06. marts 2004 - 21:30 #10
olebole -> den fra:
Kommentar: olebole 04/03-2004 18:10:57 er OK
Virker bra når jeg tester den lokalt men på maskinen,...
overfører jeg den til server blir den forkert.
Message: I script Error boxen står det: 'Ingen tilgang' (?)
Avatar billede olebole Juniormester
06. marts 2004 - 21:52 #11
Prøv lige at lægge en URL til et eksempel på serveren  :)
Avatar billede terra Nybegynder
07. marts 2004 - 23:23 #12
Hmm..., det er en *.asmx fil som laver den XML filen.
Er det her problemmet ligger?
olebole -> Jeg kan hente fra en rein xml // no problem
Avatar billede terra Nybegynder
10. maj 2004 - 01:39 #13
Er tilbage fra dvale :)
Smi et svar -> olebole -> du også.
Det ser ud at det er noe problem at hente det mellom servere med XML-DOM via ActiveXObject, det ser ud at det andet server giver ingen tilgang.
Kan være noe med retigheter (?)
Vi lukker det her og accepterer
Avatar billede olebole Juniormester
10. maj 2004 - 02:14 #14
Du skal nok bruge XMLhttp, som i (06/03-2004 03:56:34), når du kommunikerer over HTTP-protokollen (mellem servere). Jeg brugte godt nok en halvgammel ActiveX komponent ... prøv:
    new ActiveXObject("Msxml2.XMLHTTP")
i stedet  :)

Du kan evt. få mere inspiration på MS' reference om XML:
  http://msdn.microsoft.com/library/en-us/xmlsdk30/htm/xmmscxmlreference.asp?frame=true
... hold øje med menuen i venstre side - der gemmer sig mange guldkorn  :)
/mvh
Avatar billede olebole Juniormester
10. maj 2004 - 02:21 #15
... altså noget i stil med:

--------------------------------

var xmlDoc = new ActiveXObject("Msxml2.XMLHTTP");
xmlDoc.onreadystatechange = function() {
    if ( xmlDoc.readyState==4 ) {
        alert( xmlDoc.responseText );
        alert( xmlDoc.responseXML.documentElement.text );
    }
}
xmlDoc.open("GET", "http://www.domain.no/some_folder/some_file.aspx" , false);
xmlDoc.send();

--------------------------------

Nu er der vist tale om noget .NET - og der mener jeg, man skal logge sig ind, når man sender en request(?)
Jeg er selv PHP-tosse, der skriver lidt ASP-classic i JScript, så jeg er absolut ikke ekspert på .NET  :)
Avatar billede olebole Juniormester
10. maj 2004 - 02:43 #16
HA ... så fandt jeg zq det med login (har også lige sat en content-type på):

var xmlDoc = new ActiveXObject("Msxml2.XMLHTTP");
xmlDoc.onreadystatechange = function() {
    if ( xmlDoc.readyState==4 ) {
        alert( xmlDoc.responseText );
        alert( xmlDoc.responseXML.documentElement.text );
    }
}
xmlDoc.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xmlDoc.open("GET", "http://www.domain.no/some_folder/some_file.aspx" , false, "username", "password");
xmlDoc.send();
Avatar billede terra Nybegynder
22. marts 2005 - 20:02 #17
Tak for hjelpen;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester