Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   чтение xml без жкуиерити (https://javascript.ru/forum/misc/61523-chtenie-xml-bez-zhkuieriti.html)

leon2009sp 08.03.2016 09:25

<?xml version="1.0" encoding="utf-8"?>
<category>
    <city name="Россия" link="db/russia/index.php">
		<station2>inf3_rus.tpl</station2>
	</city>
	<city name="Омск" link="db/omsk/index.php">
		<station2>tpl_omsk</station2>
	</city>
<city name="Омск" link="db/novosib/index.php">
		<station2>tpl_novosib</station2>
	</city>
</category>

destus 08.03.2016 10:57

Содержание xml/city.xml и xml/db.xml надо. Хотя бы небольшой макет с несколькими дефолтными значениями. И что это за файлы inf3_omsk.tpl inf3_novosib.tpl мне непонятно.

leon2009sp 08.03.2016 15:44

файл city.xml
<?xml version="1.0" encoding="utf-8"?>
<category>
    <city name="Россия" link="db/russia/ac/index.php">
		<station2>tpl_rus</station2>
		</city>
	<city name="Омск" link="acura.php">
		<station2>tpl_omsk</station2>
		</city>
</category>

файл db.xml
<?xml version="1.0" encoding="utf-8"?>
<category>
<cat_a category="Категория_A">
    <marka name="AC" link="db/russia/ac/index.php">
		<model>AC</model>
		<model>Cobra</model>
	</marka>
	<marka name="Acura" link="acura.php">
		<model>CL</model>
		<model>CSX</model>
	</marka>
    <marka name="Alfa_Romeo" link="alfaromeo.php">
		<model>145</model>
		<model>146</model>
	</marka>
</cat_a>
<cat_b category="Категория_B">
	<marka name="Bentley" link="db/bentley.php">
		<model>Arnage</model>
		<model>Azure</model>
	</marka>
	<marka name="BMW" link="bmw.php">
		<model>1_Series</model>
		<model>2_Series</model>
	</marka>	
</category>

tpl это простой файл html только расширение tpl .
держи просил удалил

leon2009sp 08.03.2016 15:46

пример файла inf0.tpl
<html>
<head>
<script>
    function loadXMLDoc(filename) {
        if (window.ActiveXObject) {
            xhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        else {
            xhttp = new XMLHttpRequest();
        }
        xhttp.open("GET", filename, false);
        try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11
        xhttp.send(null);
        return xhttp.responseXML;
    }
    document.addEventListener('DOMContentLoaded', function () {
        var xml = loadXMLDoc("xml/city.xml"),
            selCity = document.querySelector('#city'),
            selStation = document.querySelector('#station2'),
            i;
        [].forEach.call(xml.querySelectorAll('city'), function (el) {
            selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name')))
        })
        selCity.addEventListener('change', function () {
            selStation.options.length = 0 , i=0;
            [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station2'), function (el) {
                selStation.add(new Option(el.textContent, ++i));
            })
        })
    })
</script>
</head>
<body>
<?php
echo "
<div class=selectind><select id=city><option selected>Россия_1</option></select></div></td>
<td>
<div class=selectind>&nbsp;</div>
?>
</body></html>

destus 08.03.2016 15:57

leon2009sp,
и что на выходе должно получиться? Можно на словах, а можно и сверстать HTML.

leon2009sp 08.03.2016 22:56

лучше на словах, а то еще километр кода :blink:
в inf0.tpl я выбираю город, значит в index.php в диве загружается inf3_*.tpl и город который выбрал, и в inf4.tpl ссылка должна меняться. пр: db/moscu/ac/index.php или db/novosib/ac/index.php
я думал если в javascript выбирать город и передавать его.
city=novosib;
city=moscu;
<marka name="AC" link="db/$city/ac/index.php">

не совсем, это чтобы понятней было: на самом деле так:
$xml = simplexml_load_file("xml/db.xml") or die("Error: Cannot create object");
echo "
<ul class=tops>";
foreach($xml->cat_a as $cat_a)
{
echo "<ol class=link1><font color=#ADADAB>{$cat_a['category']}</font></ol>";
foreach($cat_a->marka as $marka)
{
echo "<li align=left><a href={$marka['link']} class=link2>{$marka['name']}</a></li>";	
}
}
echo "</ul><ul class=tops>";
foreach($xml->cat_b as $cat_b)
{
echo "<ol class=link1><font color=#ADADAB>{$cat_b['category']}</font></ol>";
foreach($cat_b->marka as $marka)
{
echo "<li align=left><a href={$marka['link']} class=link2>{$marka['name']}</a></li>";	
}
}
echo "</ul><ul class=tops>";


значит в xml файле ссылка link=просто ac/index.php
а в коде
"<li align=left><a href={$city}/{$marka['link']} class=link2>{$city}/{$marka['name']}</a></li>";

$city выбирается через select в файле inf0.tpl (tpl - это чтобы не спутаться), но а так как все tpl файлы идут через include то они получаются одно целое.

leon2009sp 09.03.2016 23:00

пример кода с вложением
 
Вложений: 1
теперь намного короче. так пойдет? (нашел вложение). :write:
может кому интересно будет!

Cuntmann 10.03.2016 00:16

Блин, что-то я невпопад ляпнул ) Как это удалить?

leon2009sp 10.03.2016 15:31

чтобы два скрипта работали на одной странице правильно можно сделать так:
function loadXMLDoc(file_1) и function loadXMLDoc(file_2)

leon2009sp 13.03.2016 06:24

это что перепробовал:
selCity.addEventListener('change', function () {
                selStation.options.length = 0 , i=0;
                [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station2'), function (el) {
                  //  selStation.add(new Option(el.textContent, ++i));
					//selStation.id += el.textContent;
					//selStation = div.getElementsByTagName(el.getAttribute('name'))
					//selStation.div.id = el.textContent;
					//input.value = el.textContent;		
					//$('#station2')=el.textContent;	
					//selStation.add($('#station2').el.textContent; )
					selStation.add += el.textContent
                })

но не выдает.


Часовой пояс GMT +3, время: 18:31.