我有一个从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。
答案 0 :(得分:1)
考虑以下示例:
$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>';