在php中获取xml名称空间属性

时间:2019-02-09 14:18:19

标签: php xml namespaces attributes

是否可以获得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 :(得分:0)

我不使用simplexml,所以不能建议使用哪种方法,但是使用标准的DOMDocument及其相关方法,从显示的XML中获取name属性值是相当简单的问题。

$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

更新

要使用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

答案 1 :(得分:0)

按原本的方式使用SimpleXML很简单。如果只需要Total值,则可以使用XPath来获取具有antwoord属性的name元素,该属性的值为Totalxpath()调用返回匹配元素的列表,因此请使用[0]获取第一个元素。还会返回一个SimpleXMLElement,因此要确保该值是一个字符串,请在使用该值之前将其强制转换为(string)

$xml = simplexml_load_file($url);

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

给予...

9,0