简单的XML读取元素名称空间属性

时间:2018-04-24 12:23:04

标签: php xml simplexml

我有一个XML,架构

$xml = 
'<NodeSet
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://opcfoundation.org/UA/2008/02/Types.xsd">
    <Node category="category" i:type="ObjectNode">
        <NodeId>
            <Identifier>i=86</Identifier>
        </NodeId>
    </Node>
</NodeSet>';

我需要从Node元素中提取 i:type 属性值。我尝试访问它,因为我会在访问普通属性时这样做,但似乎它没有那样工作

以下是我可以访问category属性的方法,

$xml=simplexml_load_string($xml);
echo $xml->Node[0]['category']; //this prints 'category' as expected
echo $xml->Node[0]['i:type']; //prints nothing, how do i get the i:type attribute value ?

1 个答案:

答案 0 :(得分:1)

您需要使用命名空间访问属性,这可以使用attributes()方法完成...

echo $xml->Node[0]->attributes("i",true)['type'];

使用("i",true)表示使用i前缀而不必放置URI。