• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Parsowanie pliku XML - JavaScript

0 głosów
1,353 wizyt
pytanie zadane 27 października 2016 w JavaScript przez Newperty Początkujący (280 p.)

Witam. W ramach samorozwoju pracuję nad projektem planu lekcji. Wszystko idzie fajnie tylko napotykam problem przy parsowaniu XML do tabeli frown, a właściwie w ogóle przy parsowaniu frown

<!DOCTYPE>
<HTML>
  <HEAD>
    <TITLE>
      Odczytywanie wartości atrybutów z dokumentu XML
    </TITLE>

    <XML ID="meetingsXML" SRC="ascIksemel.xml"></XML>


    <SCRIPT LANGUAGE="JavaScript">
       function readXMLDocument()
       {
        var xmldoc, timetableNode, periodsNode, periodNode
        var attributes, periodAttribute, starttimeAttribute, endtimeAttribute
        var outputText

        xmldoc = document.all("meetingsXML").XMLDocument
        
        timetableNode = xmldoc.documentElement 
        periodsNode = timetableNode.firstChild
        periodNode = periodsNode.firstChild

        attributes = periodNode.attributes
        periodAttribute = attributes.GetNamedItem("period")
        starttimeAttribute = attributes.GetNamedItem("starttime")
        endtimeAttribute = attributes.GetNamedItem("endtime")


        outputText = "Dziala: " + '' +
              periodAttribute.value //+
              "-" + starttimeAttribute.value +
              "-" + endtimeAttribute.value

        messageDIV.innerHTML = outputText
        }
      </SCRIPT>

  </HEAD>
  <BODY>
    <CENTER>
        <H1>Odczyt elementow</H1>

          <INPUT TYPE="BUTTON" VALUE="wyswietl"
           ONCLICK="readXMLDocument()">
          <DIV ID="messageDIV"></DIV>
    </CENTER>
  </BODY>
</HTML>
<?xml version="1.0" encoding="windows-1250"?>
<timetable ascttversion="2016.17.1" importtype="database" options="export:idprefix:%CHRID,import:idprefix:%TEMPID,groupstype1,decimalseparatordot,lessonsincludeclasseswithoutstudents,handlestudentsafterlessons" defaultexport="1" displayname="aSc Timetables 2012 XML" displaycountries="">
   <periods options="canadd,export:silent" columns="period,name,short,starttime,endtime">
      <period name="0" short="0" period="0" starttime="6:55" endtime="7:40"/>
      <period name="1" short="1" period="1" starttime="7:45" endtime="8:30"/>
      <period name="2" short="2" period="2" starttime="8:40" endtime="9:25"/>
      <period name="3" short="3" period="3" starttime="9:35" endtime="10:20"/>
      <period name="4" short="4" period="4" starttime="10:30" endtime="11:15"/>
      <period name="5" short="5" period="5" starttime="11:30" endtime="12:15"/>
      <period name="6" short="6" period="6" starttime="12:25" endtime="13:10"/>
      <period name="7" short="7" period="7" starttime="13:20" endtime="14:05"/>
      <period name="8" short="8" period="8" starttime="14:15" endtime="15:00"/>
      <period name="9" short="9" period="9" starttime="15:05" endtime="15:50"/>
   </periods>
   <daysdefs options="canadd,export:silent" columns="id,days,name,short">
      <daysdef id="BD533C43ECD6A0C8" name="Dowolny dzie�" short="X" days="10000,01000,00100,00010,00001"/>
      <daysdef id="C3BE3F39F158E3B3" name="Ka�dy dzie�" short="E" days="11111"/>
      <daysdef id="A87EE794689C623F" name="Poniedzia�ek" short="Po" days="10000"/>
      <daysdef id="B8BE35E5B6647C97" name="Wtorek" short="Wt" days="01000"/>
      <daysdef id="53A9A335A5AD2FC5" name="�roda" short="�r" days="00100"/>
      <daysdef id="89A1FF497F3708A0" name="Czwartek" short="Cz" days="00010"/>
      <daysdef id="453F5EDF3F8855A8" name="Pi�tek" short="Pi" days="00001"/>
   </daysdefs>
  </timetable>

A tutaj kod ze strony na której się wzorowałem wink (to samo wrzucam niżej)
 

<?xml version="1.0" encoding="iso-8859-2"?>
<SPOTKANIA>
  <SPOTKANIE TYP="nieformalne">
    <TYTUŁ>XML w praktycznych zastosowaniach</TYTUŁ>
    <NUMER>2079</NUMER>
    <TEMAT>XML</TEMAT>
    <DATA>6/1/2002</DATA>
    <OSOBY>
      <OSOBA STATUS="obecna">
        <IMIE>Edward</IMIE>
        <NAZWISKO>Samson</NAZWISKO>
      </OSOBA>
      <OSOBA STATUS="nieobecna">
        <IMIE>Ernestyna</IMIE>
        <NAZWISKO>Johnson</NAZWISKO>
      </OSOBA>
      <OSOBA STATUS="obecna">
        <IMIE>Betty</IMIE>
        <NAZWISKO>Richardson</NAZWISKO>
      </OSOBA>
    </OSOBY>
  </SPOTKANIE>
</SPOTKANIA>
<HTML>
  <HEAD>
    <TITLE>
      Odczytywanie wartości atrybutów z dokumentu XML
    </TITLE>
 
    <XML ID="meetingsXML" SRC="spotkania.xml"></XML>
 
    <SCRIPT LANGUAGE="JavaScript">
       function readXMLDocument()
       {
        var xmldoc, meetingsNode, meetingNode, peopleNode
        var personNode, first_nameNode, last_nameNode, outputText
        var attributes, attendancePerson
 
        xmldoc = document.all("meetingsXML").XMLDocument
 
        meetingsNode = meetingsXML.documentElement
        meetingNode = meetingsNode.firstChild
        peopleNode = meetingNode.lastChild
        personNode = peopleNode.lastChild
        first_nameNode = personNode.firstChild
        last_nameNode = first_nameNode.nextSibling
        attributes = personNode.attributes
        attendancePerson = attributes.getNamedItem("STATUS")
        outputText = "Trzecia osoba: " +
                     first_nameNode.firstChild.nodeValue + ' ' +
                     last_nameNode.firstChild.nodeValue +
                     " - " + attendancePerson.value
        messageDIV.innerHTML = outputText
       }
    </SCRIPT>
  </HEAD>
 
  <BODY>
    <CENTER>
      <H1>
        Odczytywanie atrybutów z dokumentów XML
      </H1>
 
      <INPUT TYPE="BUTTON" VALUE="Pobierz informacje o trzeciej osobie"
         ONCLICK="readXMLDocument()">
      <P>
        <DIV ID="messageDIV"></DIV>
    </CENTER>
  </BODY>
</HTML>

 

1 odpowiedź

0 głosów
odpowiedź 27 października 2016 przez Comandeer Guru (608,940 p.)

Problem polega na tym, że znacznik xml nie istnieje, więc nie masz z czego pobrać tego XML-a. Najprościej byłoby ten plik XML zaciągać Ajaksem.

komentarz 28 października 2016 przez Newperty Początkujący (280 p.)

Czy do Ajaksa będę musiał używać JQuery? Znalazłem taki kod ale nie do końca rozumiem  :/ Zwłaszcza ten "if"

function testAjax()
		{
		var ajaxClient = new XMLHttpRequest();
		ajaxClient.open('POST', 'ascIksemel.xml');
		ajaxClient.setRequestHeader("Content-Type", "text/xml");
		ajaxClient.onreadystatechange = function()
		{
			if (4 === this.readyState &amp;&amp; 200 === this.status)
			{
				alert(this.responseXML.
					getElementsByTagName('periods')[0].
					getElementsByTagName('period')[0].
					firstChild.nodeValue);
			}
		}
		ajaxClient.send(null);
		}
komentarz 28 października 2016 przez Comandeer Guru (608,940 p.)

Nie, nie będziesz musiał.

Ten if sprawdza, czy żądanie się wykonało i co zwrociło.

Podobne pytania

0 głosów
0 odpowiedzi 440 wizyt
pytanie zadane 7 lutego 2018 w JavaScript przez Anoonymous Obywatel (1,560 p.)
0 głosów
0 odpowiedzi 226 wizyt
pytanie zadane 26 października 2020 w Inne języki przez Lyokoheros Początkujący (340 p.)
0 głosów
1 odpowiedź 398 wizyt
pytanie zadane 14 sierpnia 2017 w C i C++ przez niezalogowany

93,774 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,378 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...