Как читать значения внутри значений тега XML, используя php [duplicate]

Мое единственное сомнение в том, насколько применимо этот метод будет в многобайтовых строках, но если это не соображение, то я подозреваю, что вы охвачены. (Если сомневаетесь, mb_substr () кажется явно безопасным выбором.)

Однако, с большой картины зрения, мне нужно задаться вопросом, как часто вам нужно получить доступ к 'n '-го символа в строке, чтобы это было ключевым соображением.

18
задан Oskar 10 May 2012 в 16:56
поделиться

7 ответов

После правильной загрузки xml-файла с помощью SimpleXML objecto вы можете сделать print_r($xml_variable), и вы можете легко найти, к каким атрибутам вы можете получить доступ. Как говорили другие пользователи, $xml['id'] также работал для меня.

31
ответ дан Rocket Hazmat 15 August 2018 в 21:38
поделиться
  • 1
    Первый и второй примеры, к сожалению, выводят Warning: main() [function.main]: Node no longer exists in...., в то время как последний ничего не показывает. – Oskar 10 May 2012 в 16:58
  • 2
    @Andrej: Проверьте мое редактирование. – Rocket Hazmat 10 May 2012 в 17:02
  • 3
    Кажется, это трюк! Большое спасибо! (Вероятно, мне нужно больше времени посмотреть на примеры в следующий раз :() – Oskar 10 May 2012 в 17:03
  • 4
    Он работает, дайте мне знать, если вы отредактировали @ Sam's ответ тоже, потому что я изменил правильный ответ и выберете ваш сейчас. – Oskar 10 May 2012 в 17:05
  • 5
    @Andrej: Ответ Nope Sam был с самого начала: -P Я только что редактировал форматирование. – Rocket Hazmat 10 May 2012 в 17:06
31
ответ дан Rocket Hazmat 5 September 2018 в 21:14
поделиться
31
ответ дан Rocket Hazmat 29 October 2018 в 04:38
поделиться

Вам нужно правильно отформатировать XML и позволить ему иметь возможность использовать <root></root> или <document></document> что угодно .. см. спецификацию XML и примеры в http://php.net/manual/en/function .simplexml-load-string.php

$xml = '<?xml version="1.0" ?> 
<root>
<show id="8511">
    <name>The Big Bang Theory</name>
    <link>http://www.tvrage.com/The_Big_Bang_Theory</link>
    <started>2007-09-24</started>
    <country>USA</country>

    <latestepisode>
        <number>05x23</number>
        <title>The Launch Acceleration</title>
    </latestepisode>

</show>
</root>';

$xml = simplexml_load_string ( $xml );
var_dump ($xml->show->attributes ()->id);
0
ответ дан Baba 15 August 2018 в 21:38
поделиться
  • 1
    К сожалению, я не влияю на то, как форматируется xml! – Oskar 10 May 2012 в 16:56
  • 2
    Я добавил исходный источник XML в свой пост! – Oskar 10 May 2012 в 16:58

Это должно сработать. Вам нужно использовать атрибуты с типом (если используется значение sting value (string))

$id = (string) $xml->show->attributes()->id;
var_dump($id);

Или это:

$id = strip_tags($xml->show->attributes()->id);
var_dump($id);
9
ответ дан Patrick Kostjens 15 August 2018 в 21:38
поделиться

Вам нужно использовать атрибуты

Я считаю, что это должно работать

$id = $xml->show->attributes()->id;
12
ответ дан Rawkode 15 August 2018 в 21:38
поделиться
  • 1
    Это не сработает ... show является корнем по умолчанию ... ему нужно деформировать xml правильно – Baba 10 May 2012 в 16:56
  • 2
    К сожалению, я продолжаю получать Warning: main() [function.main]: Node no longer exists in.... – Oskar 10 May 2012 в 16:57

попробуйте это

$id = (int)$xml->show->attributes()->id;
3
ответ дан user 15 August 2018 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: