чтобы получить список пар префикс-идентификатор. Это худший из обоих миров, поскольку вы все еще жестко кодируете префикс, а не идентификатор.)

вопрос предназначен в качестве ссылки, чтобы ответить на наиболее распространенный вопрос, который может принимать различные формы:

У меня есть документ XML, который содержит несколько пространств имен; как мне разобрать его с SimpleXML?У моего XML есть двоеточие (":") в имени тега, как мне получить к нему доступ с помощью SimpleXML?Как получить доступ к атрибутам в моем XML-файле, если в их имени есть двоеточие?

Если ваш вопрос был закрыт как дубликат этого, он может не совпадать с этими примерами, но эта страница должна рассказать вам, что вам нужно знать.

Вот иллюстративный пример:

$xml = '
    <?xml version="1.0" encoding="utf-8"?>
    <document xmlns="http://example.com" xmlns:ns2="https://namespaces.example.org/two" xmlns:seq="urn:example:sequences">
        <list type="short">
            <ns2:item seq:position="1">A thing</ns2:item>
            <ns2:item seq:position="2">Another thing</ns2:item>
        </list>
    </document>
';
$sx = simplexml_load_string($xml);

Этот кодне будет работать; Почему нет?

foreach ( $sx->list->ns2:item as $item ) {
    echo 'Position: ' . $item['seq:position'] . "\n";
    echo 'Item: ' . (string)$item . "\n";
}

Первая проблема заключается в том, что->ns2:item неверный синтаксис; но изменив это на этотоже не работает:

foreach ( $sx->list->{'ns2:item'} as $item ) { ... }

Почему бы и нет, и что вы должны использовать вместо этого?

Ответы на вопрос(0)

Ваш ответ на вопрос