получить атрибут пространства имен xml в php - PullRequest
0 голосов
/ 09 февраля 2019

возможно ли получить attribute: name="Total" и value?Я знаю, что это возможно в массиве, но строка не всегда одинакова.

Это XML:

<XML>
<resultaten>
<resultaat>
<id>3123709</id>
<antwoord name="Total">9,0</antwoord>
<antwoord name="Communicatie">9,0</antwoord>
<antwoord name="Advies">9,0</antwoord>
<antwoord name="Deskundigheid">9,0</antwoord>
<antwoord name="Betrokkenheid">9,0</antwoord>
<antwoord name="Gemiddelde">9,0</antwoord>
</resultaat>
</resultaten>
</XML>

И я попробовал это:

$xml = simplexml_load_file($url)

$date = $xml->resultaten->resultaat->attributes();
echo $date;

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Использовать SimpleXML так, как вы изначально хотели, - просто.Если вам просто нужно значение Total, вы можете использовать XPath, чтобы получить элемент antwoord с атрибутом name, который имеет значение Total.Вызов xpath() возвращает список совпадающих элементов, поэтому используйте [0], чтобы получить первый.Также это возвращает SimpleXMLElement, поэтому, чтобы убедиться, что значение является строкой - приведите его к (string) перед использованием значения ...

$xml = simplexml_load_file($url);

$total = $xml->xpath("//antwoord[@name='Total']")[0];
echo (string)$total;

дает ...

9,0
0 голосов
/ 09 февраля 2019

Я не использую simplexml, поэтому не могу посоветовать его методы, но используя стандартный DOMDocument и связанные с ним методы, довольно просто получить значения атрибута name из XML, который вы показываете в вопросе.

$xml='<XML>
    <resultaten>
        <resultaat>
            <id>3123709</id>
            <antwoord name="Total">9,0</antwoord>
            <antwoord name="Communicatie">9,0</antwoord>
            <antwoord name="Advies">9,0</antwoord>
            <antwoord name="Deskundigheid">9,0</antwoord>
            <antwoord name="Betrokkenheid">9,0</antwoord>
            <antwoord name="Gemiddelde">9,0</antwoord>
        </resultaat>
    </resultaten>
</XML>';


$dom=new DOMDocument;
$dom->loadXML( $xml );
$col=$dom->getElementsByTagName('antwoord');
foreach( $col as $node )echo $node->getAttribute('name') . '<br />';

выводит:

Total
Communicatie
Advies
Deskundigheid
Betrokkenheid
Gemiddelde

update

Чтобы использовать URL вместо строки, просто используйте метод load, как показано ниже.

    $url='https://klantenvertellen.nl/xml/van_essen_advocaten';
    $dom=new DOMDocument;
    $dom->load( $url );
    $col=$dom->getElementsByTagName('antwoord');
    foreach( $col as $node )echo $node->getAttribute('name') . '<br />';

выходы:

datum
referentie
Uw voornaam/bedrijf:
Aanbeveling:
Geholpen door:
Ervaring:
Totaal oordeel
Communicatie
Advies
Deskun....etc
...