powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / получить родителя элемента от SimpleXMLElement
5 сообщений из 5, страница 1 из 1
получить родителя элемента от SimpleXMLElement
    #36237022
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор<?xml version="1.0" encoding="UTF-8"?>
<Stundenplan>

<tag>1
<predmet time = "4" at = "1" kabinet = "14а">4</predmet>
<predmet time = "5" at = "1" kabinet = "14a">6</predmet>
<predmet time = "6" at = "0" kabinet = "27а">1</predmet>
<predmet time = "7" at = "0" kabinet = "27a">6</predmet></tag>


<tag>2
<predmet time = "5" at = "1" kabinet = "27a">5</predmet>
<predmet time = "6" at = "1" kabinet = "27a">5</predmet>
<predmet time = "7" at = "1" kabinet = "">3</predmet>
</tag>

<tag>3
<predmet time = "4" at = "1" kabinet = "">7</predmet>
<predmet time = "5" at = "1" kabinet = "17а">1</predmet>
</tag>

<tag>4
<predmet time = "3" at = "5">9</predmet>
<predmet time = "4" at = "5" kabinet = "нет">10</predmet>
<predmet time = "5" at = "0">7</predmet>
<predmet time = "6" at = "0">8</predmet>
</tag>


<tag>5
<predmet time = "4" at = "0">4</predmet>
<predmet time = "5" at = "0">2</predmet>
<predmet time = "6" at = "0">3</predmet>
</tag>


<tag>6

</tag>


</Stundenplan>
такой вот xml.

на php код:
автор<?php


$xml = simplexml_load_file("tag.xml");
$nodes = $xml->xpath('/Stundenplan/tag/*');
foreach ($nodes as $node)
{
$parentPredmet = $node->xpath('/..');
// echo $parentPredmet."<br>";
var_dump($parentPredmet);

echo $node."<hr>"; // выводим текстовое содержимое узла
}
?>
Вот я перебираю то, что находится в /Stundenplan/tag/*.
то есть эти перебираемые элементы находятся в $node.
И вот из этого $node я хочу через Xpath узнать его tag.
для <tag> = 1:
<tag>1<predmet time = "4" at = "1" kabinet = "14а">4</predmet>
<predmet time = "5" at = "1" kabinet = "14a">6</predmet>
<predmet time = "6" at = "0" kabinet = "27а">1</predmet>
<predmet time = "7" at = "0" kabinet = "27a">6</predmet></tag>
вот перебираю я через
foreach ($nodes as $node)

<predmet>

Из примера видно, что это

4
6
1
6

, и у этих 4,6,1,6 общий родитель - <tag>, и он равен "1".
Я хочу, перебирая их узнать Xpath'ем их предка из непосредственно $node.

Уже не один день мучаюсь. Это можно вообще сделать?
...
Рейтинг: 0 / 0
получить родителя элемента от SimpleXMLElement
    #36238566
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
$node->XPath('..')

С уважением, Vasilisk
...
Рейтинг: 0 / 0
получить родителя элемента от SimpleXMLElement
    #36238605
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
две точки возвращают соседей
авторarray(1) { [0]=> object(SimpleXMLElement)#17 (1) { ["predmet"]=> array(3) { [0]=> string(1) "6" [1]=> string(1) "6" [2]=> string(1) "5" } } } 6
array(1) { [0]=> object(SimpleXMLElement)#18 (1) { ["predmet"]=> array(3) { [0]=> string(1) "6" [1]=> string(1) "6" [2]=> string(1) "5" } } } 6
array(1) { [0]=> object(SimpleXMLElement)#17 (1) { ["predmet"]=> array(3) { [0]=> string(1) "6" [1]=> string(1) "6" [2]=> string(1) "5" } } } 5
array(1) { [0]=> object(SimpleXMLElement)#18 (1) { ["predmet"]=> array(3) { [0]=> string(1) "7" [1]=> string(1) "2" [2]=> string(1) "3" } } } 7
array(1) { [0]=> object(SimpleXMLElement)#17 (1) { ["predmet"]=> array(3) { [0]=> string(1) "7" [1]=> string(1) "2" [2]=> string(1) "3" } } } 2
array(1) { [0]=> object(SimpleXMLElement)#18 (1) { ["predmet"]=> array(3) { [0]=> string(1) "7" [1]=> string(1) "2" [2]=> string(1) "3" } } } 3
array(1) { [0]=> object(SimpleXMLElement)#17 (1) { ["predmet"]=> array(3) { [0]=> string(1) "4" [1]=> string(1) "1" [2]=> string(1) "1" } } } 4
array(1) { [0]=> object(SimpleXMLElement)#18 (1) { ["predmet"]=> array(3) { [0]=> string(1) "4" [1]=> string(1) "1" [2]=> string(1) "1" } } } 1
array(1) { [0]=> object(SimpleXMLElement)#17 (1) { ["predmet"]=> array(3) { [0]=> string(1) "4" [1]=> string(1) "1" [2]=> string(1) "1" } } } 1
array(1) { [0]=> object(SimpleXMLElement)#18 (1) { ["predmet"]=> array(3) { [0]=> string(1) "5" [1]=> string(1) "9" [2]=> string(1) "1" } } } 5
array(1) { [0]=> object(SimpleXMLElement)#17 (1) { ["predmet"]=> array(3) { [0]=> string(1) "5" [1]=> string(1) "9" [2]=> string(1) "1" } } } 9
array(1) { [0]=> object(SimpleXMLElement)#18 (1) { ["predmet"]=> array(3) { [0]=> string(1) "5" [1]=> string(1) "9" [2]=> string(1) "1" } } } 1
array(1) { [0]=> object(SimpleXMLElement)#17 (1) { ["predmet"]=> array(3) { [0]=> string(1) "8" [1]=> string(1) "3" [2]=> string(1) "4" } } } 8
array(1) { [0]=> object(SimpleXMLElement)#18 (1) { ["predmet"]=> array(3) { [0]=> string(1) "8" [1]=> string(1) "3" [2]=> string(1) "4" } } } 3
array(1) { [0]=> object(SimpleXMLElement)#17 (1) { ["predmet"]=> array(3) { [0]=> string(1) "8" [1]=> string(1) "3" [2]=> string(1) "4" } } } 4
...
Рейтинг: 0 / 0
получить родителя элемента от SimpleXMLElement
    #36240095
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема была в simplexml_load_file.
Нужно через ДОМ делать. Он xpath лучше понимает.
...
Рейтинг: 0 / 0
получить родителя элемента от SimpleXMLElement
    #36240811
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmannдве точки возвращают соседейА должны родителя
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / получить родителя элемента от SimpleXMLElement
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]