PHP XML数据缺少自定义属性数据
我有以下格式的自定义XML:PHP XML数据缺少自定义属性数据,php,xml,simplexml,Php,Xml,Simplexml,我有以下格式的自定义XML: <xml> <data> <node index='0.04, 0.17, 0.30, 0.43, 1.48, 2.01, 4.23, 4.36'> node data#1 </node> <node index='0.07, 0.20, 0.33, 0.46, 1.51, 2.04, 4.27, 4.40'>
<xml>
<data>
<node index='0.04, 0.17, 0.30, 0.43, 1.48, 2.01, 4.23, 4.36'>
node data#1
</node>
<node index='0.07, 0.20, 0.33, 0.46, 1.51, 2.04, 4.27, 4.40'>
node data#2
</node>
<node index='0.11, 0.24, 0.37, 0.50, 1.55, 2.08, 4.30, 4.43'>
node data#3
</node>
</data>
</xml>
它完全缺少我的节点索引属性数据。这是有意让print\r不显示属性的
[data] => SimpleXMLElement Object
(
[node] => Array
(
[0] =>
node data#1
[1] =>
node data#2
[2] =>
node data#3
)
)
$simple = "<xml>
<data>
<node index='0.04, 0.17, 0.30, 0.43, 1.48, 2.01, 4.23, 4.36'>
node data#1
</node>
<node index='0.07, 0.20, 0.33, 0.46, 1.51, 2.04, 4.27, 4.40'>
node data#2
</node>
<node index='0.11, 0.24, 0.37, 0.50, 1.55, 2.08, 4.30, 4.43'>
node data#3
</node>
</data>
</xml>";
$p = xml_parser_create();
xml_parse_into_struct($p, $simple, $vals, $index);
xml_parser_free($p);
echo "<pre>";
print_r($vals);
下面是一个关于如何访问属性的示例
$simple = "<xml>
<data>
<node index='0.04, 0.17, 0.30, 0.43, 1.48, 2.01, 4.23, 4.36'>
node data#1
</node>
<node index='0.07, 0.20, 0.33, 0.46, 1.51, 2.04, 4.27, 4.40'>
node data#2
</node>
<node index='0.11, 0.24, 0.37, 0.50, 1.55, 2.08, 4.30, 4.43'>
node data#3
</node>
</data>
</xml>";
$p = xml_parser_create();
xml_parse_into_struct($p, $simple, $vals, $index);
xml_parser_free($p);
echo "<pre>";
print_r($vals);
itm[0]['index'];
foreach($sxml->itm作为$itm){
echo$itm[‘索引’];
}
请参阅手册:
$simple=”
节点数据#1
节点数据#2
节点数据#3
";
$p=xml_parser_create();
xml_将_解析为_结构($p、$simple、$vals、$index);
无xml解析器($p);
回声“;
打印(VAL);
[data] => SimpleXMLElement Object
(
[node] => Array
(
[0] =>
node data#1
[1] =>
node data#2
[2] =>
node data#3
)
)
为了简化结果,您可以使用
$xml = simplexml_load_string($xml_string);
$nodes = $xml->data->node;
foreach($nodes as $node) {
echo (string) $node . '<br/>';
$attrs = (string) $node->attributes()->index;
echo $attrs . '<br/>';
$numbers = explode(', ', $attrs);
print_r($numbers);
echo '<hr/>';
}
$p=xml\u parser\u create();
xml_将_解析为_结构($p、$simple、$vals、$index);
无xml解析器($p);
$array=array();
foreach(VAL为$v){
如果(strtolower($v['type'])=='complete'){
$array[]=array('attributes'=>$v['attributes'],'value'=>$v['value']);
}
}
回声“;
打印(数组);
[data] => SimpleXMLElement Object
(
[node] => Array
(
[0] =>
node data#1
[1] =>
node data#2
[2] =>
node data#3
)
)
不,它不在print\r()
中,但您可以访问它们,它没有丢失:
[data] => SimpleXMLElement Object
(
[node] => Array
(
[0] =>
node data#1
[1] =>
node data#2
[2] =>
node data#3
)
)
$xml\u string=attributes()->索引;
echo$attrs;
当然,您也可以循环每个节点:
$xml=simplexml\u load\u字符串($xml\u字符串);
$nodes=$xml->data->node;
foreach($node作为$node){
echo(字符串)$node'
';
$attrs=(字符串)$node->attributes()->index;
回显$attrs.“
”;
$numbers=分解(“,”,$attrs);
打印(数字);
[data] => SimpleXMLElement Object
(
[node] => Array
(
[0] =>
node data#1
[1] =>
node data#2
[2] =>
node data#3
)
)
回声“
”;
}