Avatar billede honning Nybegynder
27. maj 2002 - 10:46 Der er 18 kommentarer og
1 løsning

Hente værdi ud af xml

Hej Eksperter.

Jeg sender en masse info over nettet vha xml-sider. Der sker på den måde at jeg gennem en firm kalder en ASP-side med xml teksten som parametre.

Mit problem ligger i at jeg gerne vil hente enkelte værdier ud af xml dokumentet inden at jeg sender det. Umiddelbsart troede jeg at jeg kunne bruge

Request.Form(tag-navn);

Men det virker ikke. Er der nogen der har nogel gode ideer ??
Avatar billede medions Nybegynder
27. maj 2002 - 10:57 #1
Ret denne kode til, og så virker det...:

    Dim XMLDoc, rootNode, Visitor, Felt, Counter
    Set XMLDoc = Server.CreateObject("Microsoft.XMLDOM")
    XMLDoc.async = False
    XMLDoc.load(Server.MapPath("Guestbook.xml"))
    Counter = -1
    Set rootNode = XMLDoc.documentElement
    If rootNode.hasChildNodes() then   
      Response.Write "<TABLE WIDTH='400' BORDER='1'>"
          Response.Write "<FORM ACTION='./DeleteNode.asp' METHOD='Post'>"
            For Each Visitor in rootNode.childNodes
        Counter = Counter + 1
        For Each Felt in Visitor.childNodes
            If "NAME" = Felt.NodeName Then
                      Response.Write "<TR><TD ROWSPAN=2><INPUT TYPE='Radio' NAME='Besked' VALUE=" & Counter & "></TD><TD>Navn: " & Felt.Text & "</TD></TR>"
            ElseIf "DATO" = Felt.NodeName Then
              Response.Write "<TR><TD>Dato: " & Felt.Text & "</TD></TR>" & Chr(13) & Chr(10)
            End if
        Next
            Next
    Response.Write "</TABLE><BR>"
    Response.Write "<INPUT TYPE='Submit' VALUE='Slet Besked'>"
    Response.Write "</FORM>"
   
    Else
      Response.Write "Der er ingen beskeder i gæstebogen."   
    End If

//>Rune
Avatar billede honning Nybegynder
27. maj 2002 - 11:12 #2
hmm. Det kan være at jeg lige skulle nævne at jeg bruger JavaScript.

Problemet ligger i at jeg skal have lavet et filnavn hvor en værdi i xml-dokumenter skal indgå. Jeg har lavet en funktion der laver filnavnet ud fra en værdi, men den bliver ved med at sige at værdien = 'undefined'. Jeg har prøvet følgende:

create_filename( Request.QueryString( "EmplId" ) );
create_filename( Request.Form( "EmplId" ) );
Avatar billede medions Nybegynder
27. maj 2002 - 12:27 #3
Det er nok lidt sent at sige!! Når.. men her er versionen så i java script:

                <script language="JavaScript" type="text/javascript">
                          var conn = new ActiveXObject("Microsoft.XMLDOM");
                          conn.async = false;
                          conn.load("doc.xml");
                          //conn.load("c:\seatind.xml");
                                             
                          var rs1 = conn.getElementsByTagName("AirV");
                          var rs2 = conn.getElementsByTagName("FltNum");
                          var n_rs = rs1.length
                          for (i = 0; i < n_rs; i++)
                          {
                          strIndex1 = rs1.item(i).text;
                          strIndex2 = rs2.item(i).text;

                          document.write("" + strIndex1 + "<p>" + strIndex2 + "");
                          }
                </script>


//>Rune
Avatar billede honning Nybegynder
27. maj 2002 - 13:42 #4
Det er møg tæt på nu... Men variablen EmplId ligger der kun ét sted så jeg er ikke interesseret i en løkke. Jeg har prøvet følgende, men det virker heller ikke

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(Request.Form("xml"));
create_filename( xmlDoc.getElementsByTagName("EmplId") );
Avatar billede medions Nybegynder
27. maj 2002 - 13:47 #5
kig inde på www.w3schools.com -der er et eksempel med det du søger!

//>Rune
Avatar billede honning Nybegynder
27. maj 2002 - 14:35 #6
Hmm. Jeg ville mene at det skulle være rigtigt det her

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(Request.Form("xml"));
empl = xmlDoc.getElementsByTagName("EmplId").item(0).text;
Response.Write( empl );

Men jeg får en 'object required' fejl i linje 4 !!

Jeg vil ha at empl får værdien af EmplId, som er et tag i xml-dokumentet !!
Avatar billede medions Nybegynder
27. maj 2002 - 14:38 #7
Du arbejder jo ik' i ASP mere, så du skal skrive document.write istedet for Response.Write! (jeg har rettet det for dig)

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(Request.Form("xml"));
empl = xmlDoc.getElementsByTagName("EmplId").item(0).text;
document.write( empl );

//>Rune
Avatar billede medions Nybegynder
27. maj 2002 - 14:39 #8
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(<%=Request.Form("xml")%>);
empl = xmlDoc.getElementsByTagName("EmplId").item(0).text;
document.write( empl );

og du skriver oxo en direkte Request.Form i din JavaScript kode.. det kan du ik' med midre det er indkabslet i " tegnene, ellers skal du gøre som jeg har gjordt nu, men det er uden for de oprindelige <% og %> tags!
//>Rune
Avatar billede honning Nybegynder
27. maj 2002 - 14:42 #9
Nu er jeg ikke med. Skal det hele ikke være inden for <% %> JScript-tegnene ??
Avatar billede medions Nybegynder
27. maj 2002 - 14:44 #10
Nej!!

prøv at smid dit script ud så jeg kan se det!

//>Rune
Avatar billede honning Nybegynder
27. maj 2002 - 14:55 #11
<%@LANGUAGE=JScript%>
<%
    function digit_format( s, n )
    {
    if( n <= 9 )
        s += "0";
    s += n.toString();
    return s;
    }

    function create_filename( s )
    {
        d = new Date();
        fileName = d.getFullYear();
        fileName = digit_format( fileName, (d.getMonth()+1 ) );
        fileName = digit_format( fileName, d.getDay() );
        fileName = digit_format( fileName, d.getHours() );
        fileName = digit_format( fileName, d.getMinutes() );
        fileName = digit_format( fileName, d.getSeconds() );
        fileName += s;
    }

RequestPath = Server.MapPath( "/RequestXML" );

// !! create unique filename
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(Request.Form("xml"));
var empl = xmlDoc.getElementsByTagName("EmplId").item(0).text;
create_filename( empl );

// create xml request
fso = new ActiveXObject( "Scripting.FileSystemObject" );
tf = fso.OpenTextFile( RequestPath + "\\" + fileName + ".xml", 2, true );
tf.WriteLine( Request.Form("xml") );
tf.Close();

%>

asp siden bliver kaldt af en form på en html-side der består af et tekstfelt hvor xml koden står i. Koden skal så gemmes på serveren med et unikt navn dannet ud fra dato og EmplId som står i xml koden.

Jeg har undladt enkelte funktioner, som ikke er relavante.
Avatar billede medions Nybegynder
27. maj 2002 - 14:57 #12
Ahh.. ok.. well, det er jo ikke JScript det jeg har skrevet det i! det er JavaScript i sig selv!

//>Rune
Avatar billede honning Nybegynder
27. maj 2002 - 15:01 #13
ok, kan du så se hvor fejlen ligger ??
Avatar billede honning Nybegynder
27. maj 2002 - 15:14 #14
Jeg er kommet i tvivl om det er fordi xml-teksten ser sådan her ud

<?xml version="1.0" ?><root>
<sync EmplId="HH" />
</root>

Det er teksten "HH" jeg vil have fat i
Avatar billede medions Nybegynder
27. maj 2002 - 15:14 #15
ja, at det ikke er JScript, men JavaScript! - så det skal ligge uden for <% og %> tagsne!

//>Rune
Avatar billede honning Nybegynder
27. maj 2002 - 15:16 #16
Nej om EmplId i xml dokumentet overhovedet er et tag ??
Avatar billede medions Nybegynder
27. maj 2002 - 15:18 #17
Det er det ik'! - Kig på www.w3schools.com om hvordan du hiver en artribute ud fra XML!

//>Rune
Avatar billede honning Nybegynder
27. maj 2002 - 15:30 #18
DET VIRKER !! :)

Koden skulle se sådan her ud

// !! create unique filename
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(Request.Form("xml"));
empl = xmlDoc.getElementsByTagName("sync");
create_filename( empl.item(0).getAttribute("EmplId") );

Tak for hjælpen :)
Avatar billede medions Nybegynder
27. maj 2002 - 15:32 #19
:-) bare i orden!

Thx 4 Poinz
//>Rune
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
Kurser inden for grundlæggende programmering

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