我已经从一个cms (drupal)得到了一个自生成的xml输出
我需要处理这个xml,但是自动输出会生成很多无用的节点,我需要删除它们。
这是一个类似于我必须修改的原始XML的示例(当然,是一个非常半模式化的版本)
<node>
<title>AAAAAA</title>
<category>1</category>
<description>blablabla</description>
</node>
<node>
<title>ZZZZZ</title>
<category>7</category>
<description>blablabla</description>
</node>
<node>
<title>XXXXXXXX</title>
<category>5</category>
<description>blablabla</description>
</node>
<node>
<title>BBBBBBB</title>
<category>1</category>
<description>blablabla</description>
</node>
<node>
<title>CCCCCCCCC</title>
<category>1</category>
<description>blablabla</description>
</node>
<node>
<title>YYYYYYYY</title>
<category>4</category>
<description>blablabla</description>
</node>假设对类别进行检查,我只想保留类别为1的节点。
我所需要做的就是解析识别某个标记(例如)的xml,并删除所有无用的信息,这样就可以得到类似这个示例的内容。
<node>
<title>AAAAAA</title>
<category>1</category>
<description>blablabla</description>
</node>
<node>
<title>BBBBBBB</title>
<category>1</category>
<description>blablabla</description>
</node>
<node>
<title>CCCCCCCCC</title>
<category>1</category>
<description>blablabla</description>
</node>其思想是:检查某个标签,并将所有信息保存在节点中……我怎么能做这样的事情呢?我想我必须使用像DOM这样的东西。我更喜欢使用php,但也欢迎使用java。
发布于 2012-01-26 20:08:46
考虑以下示例:
$xml = simplexml_load_string($xml);
$nodes = $xml->xpath('//node[category[text()!="1"]]');
foreach ($nodes as $node) {
$dom = dom_import_simplexml($node);
$dom->parentNode->removeChild($dom);
}
// Now $xml is modified and consists of the nodes with category 1 only
echo '<pre>'; print_r($xml); echo '</pre>';https://stackoverflow.com/questions/9017742
复制相似问题