首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >获取XML节点属性

获取XML节点属性
EN

Stack Overflow用户
提问于 2011-11-03 22:56:49
回答 1查看 174关注 0票数 0

在通过cURL获取文件之后,我在这里使用了一个自定义的XML解析器。

下面是解析函数

代码语言:javascript
运行
复制
function pd_xml_parser($rawxml) {
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $rawxml, $vals, $index);
xml_parser_free($xml_parser);
$params = array();
$level = array();
$alreadyused = array();
$x=0;
foreach ($vals as $xml_elem) {
    if ($xml_elem['type'] == 'open') {
        if (in_array($xml_elem['tag'],$alreadyused)) {
            $x++;
            $xml_elem['tag'] = $xml_elem['tag'].$x;
        }
        $level[$xml_elem['level']] = $xml_elem['tag'];
        $alreadyused[] = $xml_elem['tag'];
    }
    if ($xml_elem['type'] == 'complete') {
        $start_level = 1;
        $php_stmt = '$params';
        while($start_level < $xml_elem['level']) {
            $php_stmt .= '[$level['.$start_level.']]';
            $start_level++;
        }
        $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
        @eval($php_stmt);
    }
}
return($params);
}

示例文档将如下所示:

代码语言:javascript
运行
复制
 <api>
  <tickets>
   <ticket id="number">
    <data></data>
   </ticket>
  </tickets>
</api>

我目前正在调用每个节点,使用foreach调用数据。如何从ticket节点提取属性,即id属性?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-10-10 17:07:04

你可以试试

代码语言:javascript
运行
复制
$xml = '<api>
  <tickets>
   <ticket id="111">
    <data></data>
   </ticket>
    <ticket id="222">
    <data></data>
   </ticket>

  </tickets>
</api>';

echo "<pre>";
$xml = new SimpleXMLElement($xml);
foreach ( $xml->tickets->children() as $ticket ) {
    $attribute = $ticket->attributes();
        print($attribute['id'].PHP_EOL);
}

输出

代码语言:javascript
运行
复制
111
222
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7997034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档