PHP 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:

<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
        )
)
回声“
”; }