我有这一小块XML,我希望在PHP中解析。 Works
标签没问题,我可以解析所有的属性。我遇到的问题是Doesnt
标签,它似乎是因为它具有我无法访问属性的文本内容。Parsed SimpleXMLElement缺少属性
<Export id="123" apples="pears">
<Works foo="bar" id="234"/>
<Doesnt bar="foo" id="345">Stack Exchange</Doesnt>
</Export>
我运行下面的(很简单)的代码:
$plain = '<Export id="123" apples="pear....esnt></Export>'; // as above
$sxe = simplexml_load_string($plain);
$json = json_encode($sxe);
$native = json_decode($json);
print_r($sxe, true);
print_r($native, true);
而且我结束了以下的输出:
SimpleXMLElement Object
(
[@attributes] => Array
(
[id] => 123
[apples] => pears
)
[Works] => SimpleXMLElement Object
(
[@attributes] => Array
(
[foo] => bar
[id] => 234
)
)
[Doesnt] => Stack Exchange
)
stdClass Object
(
[@attributes] => stdClass Object
(
[id] => 123
[apples] => pears
)
[Works] => stdClass Object
(
[@attributes] => stdClass Object
(
[foo] => bar
[id] => 234
)
)
[Doesnt] => Stack Exchange
)
正如你所看到的,SimpleXMLElement
对象和stdClass
对象都缺少<Doesnt>
标记的所有属性。 是否有一些解决方法或替代方法来解决它们?
绝不信任SimpleXml元素的'var_dump'或'print_r'输出。尝试访问属性,你会看到他们在那里。 – Gordon
啊哈!我减少了我的例子,以保持简单,我将加入我的下一步(即json_encode) – Matthew
嗨,对于那些想要关闭它的人,我保证这是一个真正的问题,并具有有效的可重用知识。 – Matthew