2

Drupal ページにアップロードした後、xml ファイルを変更する必要があります。これには rules-module を使用して、ファイルにいくつかの変更を加え、サーバー上の新しい場所に保存します。これは正常に機能しますが、保存された新しいファイルには、そこにあってはならない <@attribute> タグがいくつかあります。私がすることは:

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

<@attributes/> がどのようにデータに組み込まれるか考えていますか?

4

1 に答える 1

1

dpm()デバッグ機能が実際に誤ってオブジェクトを変更し、オブジェクトを破損しているように見えます。

drupal.orgのソース ツリーを掘り下げると、その関数は Krumo と呼ばれるライブラリを使用して、利用可能な場合にプリティ プリンティングを行っているようです。

その特定の問題の正確な原因はわかりませんが、確かにオブジェクトに何かを突っ込んでいます。たとえばhive()メソッドは「再帰マーカー」を追加します。

結論として、これはおそらく SimpleXML で使用するのに適した関数ではありません ( SimpleXML の「魔法」を理解する専門的な関数と比較して、オブジェクトを適切に表示することはまずありません)。

于 2013-06-13T18:58:50.667 に答える