PHP:XML文件在使用asXML保存后包含奇怪的@attribute标记

PHP:XML文件在使用asXML保存后包含奇怪的@attribute标记,php,xml,simplexml,Php,Xml,Simplexml,我需要在上传到Drupal页面后修改一个xml文件。为此,我使用规则模块对文件进行一些更改,并将其保存到服务器上的新位置。这很好,但是在保存的新文件中有一些-标记,它们不应该在那里。 我所做的是: $fileUri = $xml_file->uri; $xmlDaten = simplexml_load_file($fileUri); foreach ($xmlDaten->xpath('//Reference') as $reference) { dpm($referenc

我需要在上传到Drupal页面后修改一个xml文件。为此,我使用规则模块对文件进行一些更改,并将其保存到服务器上的新位置。这很好,但是在保存的新文件中有一些-标记,它们不应该在那里。 我所做的是:

$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模块循环和显示引用节点,但保存的文件包含损坏的数据:

<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>

b332174e-9007-4e30-9da6-f79e5bb6bb08
自动的
巴黎
a38d2bf6-aba5-49de-8783-291c0bc58165
项目Caii Iulii Solini退伍军人多组织病图书馆修订
Cl.Salmasii Plinianae在Caii Iulii Solini多组织中的实习
1629
这来自原始文件:

<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>

b332174e-9007-4e30-9da6-f79e5bb6bb08
自动的
巴黎
a38d2bf6-aba5-49de-8783-291c0bc58165
项目Caii Iulii Solini退伍军人多组织病图书馆修订
Cl.Salmasii Plinianae在Caii Iulii Solini多组织中的实习
1629

知道是如何进入数据的吗?

看来
dpm()
debug函数实际上是在意外地修改对象,使其损坏

深入研究该函数似乎使用了一个名为Krumo的库,以便在可用的情况下进行漂亮的打印

虽然我看不出这个特定问题的确切原因,但它肯定会在对象中插入一些东西,例如添加一个“递归标记”


总之,对于SimpleXML来说,这可能不是一个好的函数(与之相比,它不太可能提供对象的良好视图)。

随机猜测:dpm($reference)转储XML节点,而您不是查看保存文件而是转储?不,忘记dpm转储。我发布的代码来自已保存的文件。请删除引用节点的循环和显示?这有区别吗?如果不是,因为你不编辑XML,只考虑使用<代码>拷贝<代码>函数> <代码> asxML()>代码>谢谢戈登!我所要做的就是在那个地方删除dpm()函数。我不知道是什么让它变成这样的,因为在代码的其他不同位置我可以使用它,而且它不会损坏我的文件。与其编辑标题为“已解决:”,不如接受答案。我认为我们真的应该为这个simplexml神奇的东西选择一个很好的参考问题,我们可以轻松链接。这通常是一个问题,一个参考问题可以收集所有这些好的资源和解释。看到krumo在这个btw上失败了,我很难过。