【问题标题】:How to parse XML using php simplexml_load_file()?如何使用 php simplexml_load_file() 解析 XML?
【发布时间】:2018-02-13 06:19:15
【问题描述】:

我在文件中有以下 XML:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<conjunctiva>
    <od>
        <conjnctivalchlais examname="Conjunctival Chalasis">
            <negative elem_name="elem_ConjnctivalOd_neg">ASDFGH</negative>
            <positive elem_name="elem_ConjnctivalOd_Pos"/>
            <pos_4 elem_name="elem_ConjnctivalOd_pos4"/>
            <pos_3 elem_name="elem_ConjnctivalOd_pos3"/>
            <pos_2 elem_name="elem_ConjnctivalOd_pos2"/>
            <pos_1 elem_name="elem_ConjnctivalOd_pos1"/>
            <t elem_name="elem_ConjnctivalOd_T"/>
        </conjnctivalchlais>
    </od>
</conjunctiva>

我正在使用以下代码来解析 xml:

$csvFileName = "con2.xml";
    $conjunctiva = simplexml_load_file($csvFileName);
    foreach($conjunctiva->od as $od){
        if(gettype($od) == "object"){
            $keys = get_object_vars($od);
            $keys2 = array_keys($keys);
        for($i = 0;$i < sizeof($keys2);$i++){
            if(gettype($keys[$keys2[$i]]) == "object"){
                $keys3 = get_object_vars($keys[$keys2[$i]]);
                $keys4 = array_keys($keys3);
                for($j = 0;$j < sizeof($keys4);$j++){
                    if(gettype($keys3[$keys4[$j]]) == "object"){
                    }else if(gettype($keys3[$keys4[$j]]) == "string"){
                    }else if(gettype($keys3[$keys4[$j]]) == "array"){
                    }
                }
            }
        }
    }
}

我想将 XML 放入数组中,属性值作为键,节点值作为值。但它不起作用。

【问题讨论】:

  • 你已经在使用simpleXML,请使用-&gt;attributes()等正确方法,参考手册php.net/manual/en/book.simplexml.php
  • 你到底想完成什么?你想把 xml 值变成数组吗?

标签: php xml xml-parsing


【解决方案1】:
 $xml = simplexml_load_file('con2.xml');

 $xmlArray = json_decode(json_encode((array)$xml), TRUE);

 //this should give you the proper array with key=>value pair
 print_r($xmlArray); 

如果您想从 SIMpleXml 对象访问属性,请使用$xml-&gt;node 如果您的节点包含像node-name 这样的hiphens,那么像$node-&gt;{node-name} 这样使用它,

编辑:

现在$xmlArray 应该给你正确的数组

【讨论】:

  • @Vishal Suri,我已经更新了答案,请检查
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多