我需要在上传到Drupal-Page后修改xml文件。我使用rules-module来对文件进行一些更改并将其保存在服务器上的新位置。这工作正常,但在保存的新文件中有一些< @ attribute> -tags,不应该存在。 我所做的是:
$fileUri = $xml_file->uri;
$xmlDaten = simplexml_load_file($fileUri);
foreach ($xmlDaten->xpath('//Reference') as $reference) {
dpm($reference);
}
$xmlDaten->asXML('sites/example.de/files/xml/xml_import.xml');
我不进行任何操作,只使用Drupals devel-module循环和显示引用节点,但保存的文件包含损坏的数据:
<Reference ID="72c24cb5-c422-41c8-9047-cd43536d0f1f" ReferenceType="CollectedWorks" CreatedBy="i" CreatedOn="2012-11-26T16:15:45" ModifiedBy="i" ModifiedOn="2013-02-26T13:45:38" SequenceNumber="28160">
<Authors>b332174e-9007-4e30-9da6-f79e5bb6bb08</Authors>
<CitationKeyUpdateType>Automatic</CitationKeyUpdateType>
<PlaceOfPublication>Paris</PlaceOfPublication>
<Publishers>a38d2bf6-aba5-49de-8783-291c0bc58165</Publishers>
<Subtitle>Item Caii Iulii Solini Polyhistor ex veteribvs libris emendatvs</Subtitle>
<Title>Cl. Salmasii Plinianae exercitationes In Caii Iulii Solini Polyhistora</Title>
<Year>1629</Year>
<@attributes/></Reference>
这是来自原始文件:
<Reference ID="72c24cb5-c422-41c8-9047-cd43536d0f1f" ReferenceType="CollectedWorks" CreatedBy="i" CreatedOn="2012-11-26T16:15:45" ModifiedBy="i" ModifiedOn="2013-02-26T13:45:38" SequenceNumber="28160">
<Authors>b332174e-9007-4e30-9da6-f79e5bb6bb08</Authors>
<CitationKeyUpdateType>Automatic</CitationKeyUpdateType>
<PlaceOfPublication>Paris</PlaceOfPublication>
<Publishers>a38d2bf6-aba5-49de-8783-291c0bc58165</Publishers>
<Subtitle>Item Caii Iulii Solini Polyhistor ex veteribvs libris emendatvs</Subtitle>
<Title>Cl. Salmasii Plinianae exercitationes In Caii Iulii Solini Polyhistora</Title>
<Year>1629</Year>
</Reference>
知道如何&lt; @ attributes /&gt;进入数据?
答案 0 :(得分:1)
dpm()
调试函数实际上是在意外修改对象,从而破坏它。
通过the source tree on drupal.org挖掘它看起来像该函数使用一个名为Krumo的库来进行漂亮的打印。
虽然我看不出这个特定问题的确切原因,但它肯定会把东西戳到对象中 - 例如the hive()
method添加了“递归标记”。
最重要的是,这可能不适合与SimpleXML一起使用(与a specialist function which understands SimpleXML's "magic"相比,它不太可能提供对象的良好视图。)