Toon posts:

[Javascript] XML uitlezen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik heb nl een probleempje met mijn javascript om mijn XML aan te spreken .. Als ik de nodeValue opvraag lukt dit zonder probleem, indien ik de naam opvraag krijg ik "#text". Het is javascript gebruikt in CRM.

Hier mijn XML
code:
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <soap:Body>
    <RetrieveResult xmlns="http://schemas.microsoft.com/crm/2006/WebServices" xsi:type="new_wagen">
      <new_vestingingenid name="Zetel Gent" dsc="0">{A2098B91-6BEE-DB11-97DC-005056C00008}</new_vestingingenid>
      <new_kmstand formattedvalue="4.000">4000</new_kmstand>  
    </RetrieveResult>
  </soap:Body>
</soap:Envelope>


Dus ik doe het onderstaande om het op te vragen (value van kmstand ophalen lukt wel) :

JavaScript:
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
        var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");

        xmlHttpRequest.Open("POST", "/mscrmservices/2006/CrmService.asmx", false);
        xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2006/WebServices/Retrieve");
        xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
        xmlHttpRequest.send(xml);

        var resultXml = xmlHttpRequest.responseXML; 
 
        var filiaal = resultXml.getElementsByTagName("new_vestingingenid");
        var kmStand = resultXml.getElementsByTagName("new_kmstand");    
        

        if(filiaal[0].firstChild.nodeValue != null)
        {
    crmForm.all.new_vestiging.DataValue = filiaal[0].firstChild.nodeName;
        }

        var test = String(filiaal[0].firstChild.nodeName);
        alert(test);
        
        if(kmStand[0].firstChild.nodeValue !=null)
        {
           crmForm.all.new_kmstand.DataValue = parseInt(kmStand[0].firstChild.nodeValue);
        }


Dus Hij haalt de values enzo op, maar niet de name .. ?? Doe ik iets verkeerd ik moet dus "Zetel Gent" krijgen... bij "new_vestingingenid"..

die new_kmstand = tekstveld .. Maar in alert toont hij ook "#text" :s

thx op voorbaat,
Frederic

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23:17

NetForce1

(inspiratie == 0) -> true

Het klopt toch? De first child van new_vestingingenid is een text node met een guid, als je de waarde van het attribuut naam wilt hebben zul je iets moeten doen met getAttribute oid (weet de precieze methode niet).

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Wat jij wil is een attributevalue uitlezen. Nu lees je de nodevalue uit. Ik raad je aan om eens op de MSDN site rond te kijken om te zien wat je met dat XMLHttp object allemaal kan.
Of anders hier:
http://www.w3schools.com/dom/dom_examples.asp

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
bigbeng schreef op vrijdag 01 juni 2007 @ 14:43:
Wat jij wil is een attributevalue uitlezen. Nu lees je de nodevalue uit. Ik raad je aan om eens op de MSDN site rond te kijken om te zien wat je met dat XMLHttp object allemaal kan.
Of anders hier:
http://www.w3schools.com/dom/dom_examples.asp
Echt Super thx voor die zalige goeie Site :) Kwas die compleet vergeten (vroeger nog gebruikt voor school) Ik heb het zo opgelost :

JavaScript:
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
var lookupItem = new Array;
lookupItem = crmForm.all.new_wageninterventieid.DataValue;

if (lookupItem && lookupItem[0] != null)
{           
        var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        xmlHttpRequest.Open("POST", "/mscrmservices/2006/CrmService.asmx", false);
        xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2006/WebServices/Retrieve");
        xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
        xmlHttpRequest.send(xml);

        var resultXml = xmlHttpRequest.responseXML; 
        var x = resultXml.getElementsByTagName("new_vestingingenid");
        var filiaalNaam = "";

        for (i=0;i<x.length;i++)
        {
            filiaalNaam = x[i].getAttribute("name");  
        }       

        var filiaal = resultXml.getElementsByTagName("new_vestingingenid");
        var kmStand = resultXml.getElementsByTagName("new_kmstand");    
        
        if(filiaal[0].firstChild.nodeValue != null)
        {
            crmForm.all.new_vestiging.DataValue = filiaalNaam;
        }
    
        if(kmStand[0].firstChild.nodeValue !=null)
        {
            crmForm.all.new_kmstand.DataValue = parseInt(kmStand[0].firstChild.nodeValue);
        }

}

Verwijderd

Topicstarter
Mijn Excuses :) Omdat het eigenlijk met CRM is en ik werk daar met C# & Javascript, .. Wat messed up ..

  • Alex Picard
  • Registratie: November 2005
  • Laatst online: 19-11 00:56
Wat je wil kan korter, duidelijker en efficiënter:

JavaScript:
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
var lookupItem = new Array;
lookupItem = crmForm.all.new_wageninterventieid.DataValue;

if (lookupItem && lookupItem[0] != null)
{           
        var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        xmlHttpRequest.Open("POST", "/mscrmservices/2006/CrmService.asmx", false);
        xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2006/WebServices/Retrieve");
        xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        xmlHttpRequest.setRequestHeader("Content-Length", xml.length);
        xmlHttpRequest.send(xml);

        var resultXml = xmlHttpRequest.responseXML; 

        var filiaal = resultXml.getElementsByTagName("new_vestingingenid");
        var kmStand = resultXml.getElementsByTagName("new_kmstand");    
        
        if(filiaal[0].firstChild.nodeValue != null)
        {
            crmForm.all.new_vestiging.DataValue = filiaal[0].getAttribute("name");
        }
    
        if(kmStand[0].firstChild.nodeValue !=null)
        {
            crmForm.all.new_kmstand.DataValue = parseInt(kmStand[0].firstChild.nodeValue);
        }

}


Just my two cents.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

had het dan meteen ook cross-browser compliant gemaakt, document.all kan echt niet meer ;)

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op vrijdag 01 juni 2007 @ 15:21:
had het dan meteen ook cross-browser compliant gemaakt, document.all kan echt niet meer ;)
Het is CRM :) Een Microsoft-Pakket .. Daar kijken ze niet achter :) Ik doe alles gelijk ze uitleggen in de boek .. Dus ja .. Jammer genoeg van document.all, maar het moet nu éénmaal zo :s Anders gebruik ik dit ook niet meer zé ;)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

Verwijderd schreef op vrijdag 01 juni 2007 @ 15:32:
[...]


Het is CRM :) Een Microsoft-Pakket .. Daar kijken ze niet achter :) Ik doe alles gelijk ze uitleggen in de boek .. Dus ja .. Jammer genoeg van document.all, maar het moet nu éénmaal zo :s Anders gebruik ik dit ook niet meer zé ;)
Tsja, MS heeft er inderdaad wel een handje van om in voorbeelden hun eigen proprietary misbaksels voor te trekken op standards-compliant methoden. Dat is natuurlijk een manier van vendor lock-in, maar wel iets dat haaks staat op de recente uitspraken van MS om zich meer te richten op standaarden.

Probleem is dat IE nooit volledig standards-compliant gemaakt kan worden zonder document.all op te geven. Als er straks een IE versie uitkomt die echter middels een 'opt-in' (bad choice, maar dat zijn wel de ideeën die ze hebben) wel echt standards compliant werkt dan kan jij daar geen gebruik van maken omdat je nu nog document.all gebruikt :P

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op vrijdag 01 juni 2007 @ 15:39:
[...]

Tsja, MS heeft er inderdaad wel een handje van om in voorbeelden hun eigen proprietary misbaksels voor te trekken op standards-compliant methoden. Dat is natuurlijk een manier van vendor lock-in, maar wel iets dat haaks staat op de recente uitspraken van MS om zich meer te richten op standaarden.

Probleem is dat IE nooit volledig standards-compliant gemaakt kan worden zonder document.all op te geven. Als er straks een IE versie uitkomt die echter middels een
[...]
'opt-in' (bad choice, maar dat zijn wel de ideeën die ze hebben) wel echt standards compliant werkt dan kan jij daar geen gebruik van maken omdat je nu nog document.all gebruikt :P
Wel moet ik erbij zeggen dat er nieuwe versie komt van CRM, dus mss gaan ze daar bekijken om wat aanpassingen te doen ... Dus ja we zien wel .. Maar ik weet dat veel firma's met MS producten werken, dus jah, ik ben beginneling in al deze producten :) Dus we zien we zien wel hoe het uitdraait .. het is allezins ne bere-goe forum hier zé :) jullie hebben me al veel geholpen !!!!
Pagina: 1