从SimpleXMLElement对象的xpath引用中提取数据



我正试图将XML文件读取到数组中,我遇到了一点麻烦。下面是目前为止我的代码:

 $inst = new SimpleXMLElement($xml);
 foreach( $inst->xpath("record[@id='" . $range . "']") as $u ) {
      foreach($fields as $field) {
          $results[$field] = $u->$field;
      }
 }

但是当我做print_r($results)时,输出是这样的:

Array
(
[field1] => SimpleXMLElement Object
    (
        [0] => field1Data
    )
[field2] => SimpleXMLElement Object
    (
        [0] => field2Data
    )
[field3] => SimpleXMLElement Object
    (
        [0] => field3Data
    )
)

我如何从SimpleXMLElement Object直接获得数据并将其存储在数组中,而不是让它这样做?我尝试访问它作为一个数组,如$u->$field[0],但也没有工作。

将SimpleXMLElement强制转换为字符串是一般的解决方案(参见"将SimpleXML对象强制转换为字符串,无论上下文如何"对于规范问题),对于包含所有SimpleXMLElement的完整数组,如xpath()返回的或像您自己创建的那样,一种常见的方法是将数组映射到trim:

$results = array_map('trim', $results);

strval:

$results = array_map('strval', $results);
例如:

$inst    = new SimpleXMLElement($xml);
list($u) = $inst->xpath("record[@id='" . $range . "']")
foreach ($fields as $field) {
    $results[$field] = $u->$field;
}
$results = array_map('strval', $results);

最新更新