Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

XML Javascript извеждане

Featured Replies

Здравейте. Имам следния XML файл (cars.xml). Опитвам се да го изведа с JS, обаче нещо не ми се получава. Може ли някой да даде акъл по кода ;) Преди да ме наредите, че не съм чел в Гугъл...прерових всичко...намерих много, ама никак не успях го подкарам.

<?xml version="1.0"?><?xml-stylesheet type="text/css" href="xmlStyle.css"?><catalog><CAR><TITLE>Empire Burlesque</TITLE><MODEL>Bob Dylan</MODEL><COUNTRY>USA</COUNTRY><COMPANY>Columbia</COMPANY><PRICE>10.90</PRICE><YEAR>1985</YEAR><FUEL>Benzin</FUEL><FUEL>GAZ</FUEL></CAR></CATALOG> 

 

 

<html> <h2>Display XML data in HTML</h2> <script type="text/javascript"> var xmlDoc=null; if (window.ActiveXObject){ xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); } else if (document.implementation.createDocument){ xmlDoc=document.implementation.createDocument("","",null); } else{ alert('Browser cannot handle this script'); } if (xmlDoc!=null){ xmlDoc.async=false; xmlDoc.load("cars.xml"); document.write("<table border='1'>"); document.write("<tr>"); document.write("<th>"); document.write("asdasd"+"<br>"); document.write("</th>"); document.write("<th>"); document.write("asd"+"<br>"); document.write("</th>"); document.write("</tr>"); var x=xmlDoc.getElementsByTagName("TITLE"); for (i=0;i<x.length;i++) {  document.write("<tr>"); document.write("<td>"); document.write(x[i].getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue); document.write("</td>"); document.write("<td>"); document.write(x[i].getElementsByTagName("FUEL")[0].childNodes[0].nodeValue); document.write("</td>"); } document.write("</table>"); } </script> </html> 
<html> <h2>Display XML data in HTML</h2> <script type="text/javascript"> var xmlhttp = null;if (window.XMLHttpRequest)  {// code for IE7+, Firefox, Chrome, Opera, Safari  xmlhttp=new XMLHttpRequest();  }else  {// code for IE6, IE5  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }xmlhttp.open("GET","cars.xml",false);xmlhttp.send();xmlDoc=xmlhttp.responseXML; document.write(xmlDoc.getElementsByTagName("TITLE")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("MODEL")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("PRICE")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("YEAR")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("FUEL")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("FUEL")[1].childNodes[0].nodeValue); </script> </html>

Набързо нещо такова. Също смени отварящия таг catalog в xml-a да е със главни букви("<CATALOG>"), понеже затварящия ти таг е "</CATALOG>" или обратното.

Редактирано от Syrex (преглед на промените)

  • Автор

 

<html> <h2>Display XML data in HTML</h2> <script type="text/javascript"> var xmlhttp = null;if (window.XMLHttpRequest)  {// code for IE7+, Firefox, Chrome, Opera, Safari  xmlhttp=new XMLHttpRequest();  }else  {// code for IE6, IE5  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }xmlhttp.open("GET","cars.xml",false);xmlhttp.send();xmlDoc=xmlhttp.responseXML; document.write(xmlDoc.getElementsByTagName("TITLE")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("MODEL")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("COUNTRY")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("COMPANY")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("PRICE")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("YEAR")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("FUEL")[0].childNodes[0].nodeValue + "<br>");document.write(xmlDoc.getElementsByTagName("FUEL")[1].childNodes[0].nodeValue); </script> </html>

Набързо нещо такова. Също смени отварящия таг catalog в xml-a да е със главни букви("<CATALOG>"), понеже затварящия ти таг е "</CATALOG>" или обратното.

Хубаво, но не ми тръгва. А доколкото до тага, просто изгледа моя грешка като съм paste-вал и съм добавил затварящия на ръка...всичко е ток и жица в xml-а. Пробвах го на chrome  и IE 10... Никакъв резултат на екрана.

Редактирано от scarfeel1 (преглед на промените)

<?xml version="1.0"?><?xml-stylesheet type="text/css" href="xmlStyle.css"?><CATALOG><CAR><TITLE>Empire Burlesque</TITLE><MODEL>Bob Dylan</MODEL><COUNTRY>USA</COUNTRY><COMPANY>Columbia</COMPANY><PRICE>10.90</PRICE><YEAR>1985</YEAR><FUEL>Benzin</FUEL><FUEL>GAZ</FUEL></CAR></CATALOG>

Пробвай с този xml и ако и сега не тръгва значи path-a към документа не е верен.

ПП. Сега видях, че работи само на мозила, не знам защо...

Редактирано от Syrex (преглед на промените)

...

.

Публикувано изображение

 

 

Силата на PHP

cars.php

<?php	//създаване на обект и зареждане на документа в него	$sxml = simplexml_load_file("cars.xml");?>	<html>	<head>		<title>PHP XML Parser</title>	</head>	<body>	<h1>Автомобили</h1>	<table border="1" width="100%" style="border-collapse: collapse;">		<tr>			<th>TITLE</th>			<th>MODEL</th>			<th>COMPANY</th>			<th>PRICE</th>			<th>YEAR</th>			<th>FUEL</th>		</tr>		<tr style="text-align:center;"><?php	//  извеждане на структурата	foreach ($sxml->CAR as $node) {		echo "<td>", $node->TITLE, "</td>";		echo "<td>", $node->MODEL, "</td>";		echo "<td>", $node->COMPANY, "</td>";		echo "<td>", $node->PRICE, "</td>";		echo "<td>", $node->YEAR, "</td>";		echo "<td>", $node->FUEL, "</td>";	}?>		</tr>	</table></body></html>

cars.xml

<?xml version="1.0" encoding="utf-8" ?><!-- някакъв стил<?xml-stylesheet type="text/css" href="xml_cars.css"?>--><CATALOG xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "cars.xsd">    <CAR>        <TITLE>Empire Burlesque</TITLE>        <MODEL>Bob Dylan</MODEL>        <COUNTRY>USA</COUNTRY>        <COMPANY>Columbia</COMPANY>        <PRICE>10.90</PRICE>        <YEAR>1985</YEAR>        <FUEL>Benzin</FUEL>    </CAR></CATALOG>

cars.xsd

<?xml version="1.0" encoding="UTF-8" ?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">  <xs:element name="CAR">    <xs:complexType>      <xs:sequence>        <xs:element ref="TITLE" />        <xs:element ref="MODEL" />        <xs:element ref="COUNTRY" />        <xs:element ref="COMPANY" />        <xs:element ref="PRICE" />        <xs:element ref="YEAR" />        <xs:element ref="FUEL" />      </xs:sequence>    </xs:complexType>  </xs:element>  <xs:element name="CATALOG">    <xs:complexType>      <xs:sequence>        <xs:element ref="CAR" />      </xs:sequence>    </xs:complexType>  </xs:element>  <xs:element name="COMPANY">    <xs:complexType mixed="true" />  </xs:element>  <xs:element name="COUNTRY">    <xs:complexType mixed="true" />  </xs:element>  <xs:element name="FUEL">    <xs:complexType mixed="true" />  </xs:element>  <xs:element name="MODEL">    <xs:complexType mixed="true" />  </xs:element>  <xs:element name="PRICE">    <xs:complexType mixed="true" />  </xs:element>  <xs:element name="TITLE">    <xs:complexType mixed="true" />  </xs:element>  <xs:element name="YEAR">    <xs:complexType mixed="true" />  </xs:element></xs:schema>

Резултат

Публикувано изображение

 

И това е най-примитивното решение!!!

  • Автор

Благодаря, но не ми трябва PHP. Условието на това което се занимавам е с JS. Иначе защо по дяволите върви само на мозила...

 

Първата снимка съм я изтипосал за шарения ...

Редактирано от Profruit (преглед на промените)

  • Автор

Е, хубаво, но на мен ми трябва с JS и искам да науча как ще стане с JavaScripta. Иначе няма нужда от остроумие. 

Иначе няма нужда от остроумие. 

 

Иначе от мислене има. Погледни първата снимка, погледни грешката, която Хром дава, погледни полето на браузъра и с какво започва(file://, а как трябва да е?).

  • Автор

След реструктуриране на XML ми даде това: Uncaught TypeError: Cannot call method 'getElementsByTagName' of null
На този ред : document.write(xmlDoc.getElementsByTagName("TITLE")[0].childNodes[0].nodeValue + "<br>"); Иначе с горната структура, която постнах пробачка, благодаря на всички. Но с тази новата някой да има идея защо ?
Новата структура която измислих е :

<catalog>
<CAR>
<TITLE>Honda</TITLE>
<MODEL>Civic Dylan</MODEL>
<COUNTRY>Japan</COUNTRY>
<COMPANY>Conev</COMPANY>
<PRICE>2121.5</PRICE>
<YEAR>1996</YEAR>
<FUEL>
<FUEL1>Benzin</FUEL1>
<FUEL2>GAZ</FUEL2>
</FUEL>
</CAR>
</catalog>
Та аз ли бъркам нещо в структурата ?

Редактирано от scarfeel1 (преглед на промените)

Защото не обработващ дървото, а то се е разклонило. Защото не си наясно какво е корен, родител и потомък. Документът е валиден (firedox умее да валидира, той е нещо като парсер), но в парсера ще трябва да вкараш логика. Една функция ще търси отварящ елемент, втора - затварящ, а трета - текстово съдържание. Те на свой ред ще плюят върнатото и така ще визуализираш. Много точно за това дело е SAX.

 

успех омбре!

Редактирано от Profruit (преглед на промените)

Имаш грешка в отварящия XML таг <CATALOG>, който трябва да е с главни букви.

 

Та този XML:

 

<?xml version="1.0"?><?xml-stylesheet type="text/css" href="xmlStyle.css"?><CATALOG><CAR><TITLE>Empire Burlesque</TITLE><MODEL>Bob Dylan</MODEL><COUNTRY>USA</COUNTRY><COMPANY>Columbia</COMPANY><PRICE>10.90</PRICE><YEAR>1985</YEAR><FUEL>Benzin</FUEL><FUEL>GAZ</FUEL></CAR></CATALOG>

С този Ajax:

 

<html><head></head><body> <h2>Display XML data in HTML</h2> <div id="test"></div> <script type="text/javascript">  var xmlDoc = new XMLHttpRequest(); xmlDoc.open('GET', 'cars.xml', true); xmlDoc.onreadystatechange = stateChange; xmlDoc.send(null);function stateChange() { var x = xmlDoc.responseXML; var country = x.getElementsByTagName("COUNTRY"); var model = x.getElementsByTagName("MODEL"); var company = x.getElementsByTagName("COMPANY"); var price = x.getElementsByTagName("PRICE");  var html = ''; var xmlLength = x.getElementsByTagName("CAR").length;     for (var i = 0; i < xmlLength; i++) {   html += country[i].nodeName + ' - ' + country[i].firstChild.nodeValue + '<br>';   html += model[i].nodeName + ' - ' + model[i].firstChild.nodeValue + '<br>';   html += company[i].nodeName + ' - ' + company[i].firstChild.nodeValue + '<br>';   html += price[i].nodeName + ' - ' + price[i].firstChild.nodeValue + '<br>'; } document.getElementById('test').innerHTML = html;} </script> </body> </html>

Дава това:

 

Публикувано изображение

 

Имай предвид, че е хубаво да се направи валидация на заявката със съответните "Error Handlers".

Редактирано от gothicrock (преглед на промените)

Не, няма проблем. Елементите са регистрозависими само в отварящия и затваращия таг. Препоръчително е да са с малки букви. Пусни xml файла за проба в firefox и гледай какво ще изпише.  В случай на грешка ще посочи номера на реда и какво не е наред.

 

Същността на въпроса е да докопа всеки елемент от дървото. И нагледно стои така:

 

XMLElement Object(    [CAR] => XMLElement Object        (            [TITLE] => Honda            [MODEL] => Civic Dylan            [COUNTRY] => Japan            [COMPANY] => Conev            [PRICE] => 2121.5            [YEAR] => 1996            [FUEL] => XMLElement Object                (                    [FUEL1] => Benzin                    [FUEL2] => GAZ                )        ))

Прилича на многомерен масив, но си е обект.

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.