php SimpleXML属性缺失

时间:2012-09-14 22:23:32

标签: php simplexml

我在这里有以下xml文档: 编辑:(见下面的样本)

我使用php / SimpleXML将其转换为一个对象来读取它:

$xmlContent = file_get_contents($path . '/test.xml');
$tablesRaw = new SimpleXMLElement($xmlContent);
echo '<pre>';
print_r($tablesRaw);
echo '</pre>';

当我print_r时,我看到字段的属性,但是不显示可接受值的属性。这是原始xml的一个例子(我需要value属性):

<acceptable-value value="0">
    Unknown
</acceptable-value>

这是我在print_r时看到的:

[acceptable-values] => SimpleXMLElement Object
                                            (
                                                [acceptable-value] => Array
                                                    (
                                                        [0] => 
                    Unknown

                                                        [1] => 
                    Invalid

                                                        [2] => 
                    Deleted

                                                        [3] => 
                    Valid/Good

                                                        [4] => 
                    Inactive

                                                    )

                                            )

为什么属性没有显示的任何线索?提前谢谢。

编辑:请求部分xml:

<field name="Address1Type" type="String"/>
<field name="Address2Street1" type="String"/>
<field name="Address2Street2" type="String"/>
<field name="Address2Type" type="String"/>
<field name="Address3Street1" type="String"/> 
<field name="Status" type="Integer" access="R">
            <acceptable-values>
                <acceptable-value value="0">
                    Unknown
                </acceptable-value>
                <acceptable-value value="1">
                    Invalid
                </acceptable-value>
                <acceptable-value value="2">
                    Deleted
                </acceptable-value>
                <acceptable-value value="3">
                    Valid/Good
                </acceptable-value>
                <acceptable-value value="4">
                    Inactive
                </acceptable-value>
            </acceptable-values>
        </field>

1 个答案:

答案 0 :(得分:7)

这里的简单答案是不要将print_r()与SimpleXML对象一起使用。因为它们是非PHP数据的包装器,所以通常显示“整个”对象的函数并不能真正反映出您正在查看的内容。

使用SimpleXML访问属性的方法是使用属性名称,就好像它是一个数组键($node['attribute']);这样做意味着在某个地方有一个带有该键的数组,它是伪装的函数调用。

如果您想在编写SimpleXML代码时了解您正在查看的节点,请查看我编写的this simplexml_dump() function(欢迎反馈)。