试图在php中解析奇怪的格式化xml

时间:2009-08-18 14:30:17

标签: php xml curl parsing

我正在尝试将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。

任何帮助完成这项工作比阅读字符串等更有帮助。

2 个答案:

答案 0 :(得分:1)

xml_parse_into_struct()很不错。

答案 1 :(得分:0)

很抱歉,如果我不能正确理解您的问题,但是将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解析器的功能时),当有工具处理给定问题时更容易。但也许我误解了你的问题......