[英]PHP filter XML xpath and export image
I have a xml export that needs to be filtered before it can be imported. 我有一个xml导出,需要在导入之前进行过滤。
So I wrote code to load, filter and save it. 所以我编写代码来加载,过滤和保存它。
$xml = simplexml_load_file('test.xml');
$nodes = $xml->xpath('/nodes/node[ ... condition ... ]');
$nodes->asXML('filtred.xml');
But I saw that asXML()
is a SimpleXMLElement::function
and that is an object of SimpleXMLElement
elements. 但我看到
asXML()
是一个SimpleXMLElement::function
,它是SimpleXMLElement
元素的对象。
How can I group all the $nodes
in a general SimpleXMLElement
element to use asXML()
on it? 如何将常规
SimpleXMLElement
元素中的所有$nodes
分组$nodes
在其上使用asXML()
?
The original XML structure is: 原始的XML结构是:
<nodes>
<node>
<Titolo>Acquisti</Titolo>
<Corpo></Corpo>
<Nid>450</Nid>
</node>
...
</nodes>
Based on SimpleXML: append one tree to another , your result is a list of nodes those have to be wraped by a root element on which you can call asXml
基于SimpleXML:将一个树附加到另一个树 ,结果是一个节点列表,这些节点必须由一个可以调用
asXml
的根元素包装
$xmlIn = '
<nodes>
<node>
<Titolo>Acquisti</Titolo>
<Corpo></Corpo>
<Nid>450</Nid>
</node>
<node>
<Titolo>Acquisti 2</Titolo>
<Corpo></Corpo>
<Nid>450</Nid>
</node>
<node>
<Titolo>Acquisti 2</Titolo>
<Corpo></Corpo>
<Nid>450</Nid>
</node>
</nodes>
';
$xml = simplexml_load_string($xmlIn);
$nodes = $xml->xpath('/nodes/node');
$xmlOut = new SimpleXMLElement('<nodes></nodes>');
$domOut = dom_import_simplexml($xmlOut);
foreach ($nodes as $n) {
$tmp = dom_import_simplexml($n);
$tmp = $domOut->ownerDocument->importNode($tmp, TRUE);
$domOut->appendChild($tmp);
}
$xmlOut->asXML('filtred.xml');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.