【问题标题】:trying to parse weird formatted xml in php试图在 php 中解析奇怪的格式化 xml
【发布时间】:2009-08-18 14:30:17
【问题描述】:

我正在尝试将 XML 数据切割成可用的字符串,以便稍后在我的脚本中重用它们。

我通过 Curl 请求接收数据,他的表现很好。 现在砍数据要了我的命..

这是我收到的 XML 的一部分(整个数据部分大约 90 行)

<professions>
    <skill key="IT Specialist" maxage="40" group="IT" worked="5"/>
    <skill key="Assistant" maxage="35" group="Office" worked="5"/>
</professions>

现在我当然可以制作过滤数据等功能,但我只是觉得有一种不同的方法可以完成这项工作。 XML 在 $var 中加载。

比阅读字符串等更好地完成这项工作的任何帮助都会有所帮助。

【问题讨论】:

  • @Fons - 你能停止恢复我的编辑吗?我的更改正在使您的 XML 真正显示出来。
  • 正试图让它显示,感谢您的编辑。

标签: php xml curl parsing


【解决方案1】:

@987654321@() 不错。

【讨论】:

  • 立即查看此内容,让您了解结果。
  • 现在获取数组中的一半数据,太棒了!记录值,不记录索引。将尝试找到解决方法。非常感谢!问候 Fons
  • 像魅力一样工作!也非常快。非常感谢 Fons
【解决方案2】:

抱歉,如果我没有正确理解您的问题,但是将 XML 简单地放入 SimpleXML 有什么问题,这是迄今为止最容易使用的 PHP XML API,它还支持 XPath 进行选择性数据提取:

$data = simplexml_load_string($var);
echo $data->skill[0]['key']; // will print "IT Specialist"
foreach ($data->skill as $skill) {
    printf('%s in group %s with max. age %d and %d year(s) of experience', 
        $skill['key'], $skill['group'], $skill['maxage'], $skill['worked']) . "\n";
}
/*
 * this will print:
 * IT Specialist in group IT with max. age 40 and 5 year(s) of experience
 * Assistant in group Office with max. age 35 and 5 year(s) of experience
 */
$keys = $data->xpath('/professions/skill/@key');
foreach ($keys as $key) {
    echo $key . "\n";
}
/*
 * this will print:
 * IT Specialist
 * Assistant
 */
// and you can do a lot more...

我想不出有什么理由会为xml_parse_into_struct() 创建的奇怪数据结构而烦恼(除了编写一些自己的类似 XML 解析器的功能时),当有工具可以更轻松地处理给定问题时。但也许我误解了你的问题......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    相关资源
    最近更新 更多