我需要将以下XML转换/解析为关联数组。我尝试使用PHP的simplexml_load_string函数,但它没有将属性检索为关键元素。
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<OPS_envelope>
<header>
<version>0.9</version>
</header>
<body>
<data_block>
<dt_assoc>
<item key="protocol">XCP</item>
<item key="object">DOMAIN</item>
<item key="response_text">Command Successful</item>
<item key="action">REPLY</item>
<item key="attributes">
<dt_assoc>
<item key="price">10.00</item>
</dt_assoc>
</item>
<item key="response_code">200</item>
<item key="is_success">1</item>
</dt_assoc>
</data_block>
</body>
</OPS_envelope>
我需要像这样的上述XML数据,key =&gt;价值对。
array('protocol' => 'XCP',
'object' => 'DOMAIN',
'response_text' => 'Command Successful',
'action' => 'REPLY',
'attributes' => array(
'price' => '10.00'
),
'response_code' => '200',
'is_success' => 1
)
答案 0 :(得分:1)
您可以使用DOMDocument
和XPath
来做您想做的事情:
$data = //insert here your xml
$DOMdocument = new DOMDocument();
$DOMdocument->loadXML($data);
$xpath = new DOMXPath($DOMdocument);
$itemElements = $xpath->query('//item'); //obtain all items tag in the DOM
$argsArray = array();
foreach($itemElements as $itemTag)
{
$key = $itemTag->getAttribute('key'); //obtain the key
$value = $itemTag->nodeValue; //obtain value
$argsArray[$key] = $value;
}
您可以点击DOMDocument或XPath
找到更多信息我看到你有一个有叶子的节点。
<item key="attributes">
<dt_assoc>
<item key="price">10.00</item>
</dt_assoc>
</item>
显然,在这种情况下,你必须再次“导航”这个“子DOM”以获得你正在寻找的东西。
Prasanth答案也不错,但会产生等等作为键,我不知道你是否想要它。