-1

私がprint_r($nodes);得るとき:

Array (
  [0] => SimpleXMLElement Object (
    [kategoria_6] => 1
    [opis_6] => 1
    [img] => slides/slide0.jpg
  )
  [1] => SimpleXMLElement Object (
    [kategoria_6] => 2
    [opis_6] => 2
    [img] => slides/slide1.jpg
  )
  [2] => SimpleXMLElement Object (
    [kategoria_6] => 3
    [opis_6] => 3
    [img] => slides/slide4.jpg
  )
  [3] => SimpleXMLElement Object (
    [kategoria_6] => 4
    [opis_6] => 4
    [img] => slides/slide3.jpg
  )
  [4] => SimpleXMLElement Object (
    [kategoria_6] => 7
    [opis_6] => 7
    [img] => slides/slide2.jpg
  )
)

そして今、この場合、私はこれを行うことができません:

$nodes->asXML("c:\\aaa.xml");

これは配列であるため、f.ex を実行できます。

$nodes[1]->asXML("c:\\aaa.xml");

しかし、取得できる要素は 1 つだけです。この配列をすべて取得するか、次のように変更する必要があります。

SimpleXMLElement Object (
  [item] => Array (
    [0] => SimpleXMLElement Object (
      [kategoria_6] => 1
      [opis_6] => 1
      [img] => slides/slide0.jpg
    )
    [1] => SimpleXMLElement Object (
      [kategoria_6] => 2
      [opis_6] => 2
      [img] => slides/slide1.jpg
    )
    [2] => SimpleXMLElement Object (
      [kategoria_6] => 3
      [opis_6] => 3
      [img] => slides/slide4.jpg
    )
    [3] => SimpleXMLElement Object (
      [kategoria_6] => 4
      [opis_6] => 4
      [img] => slides/slide3.jpg
    )
    [4] => SimpleXMLElement Object (
      [kategoria_6] => 7
      [opis_6] => 7
      [img] => slides/slide2.jpg
    )
  )
)

どのように解決しますか?

4

1 に答える 1

5

残念ながら、SimpleXML自体では、やりたいことを簡単に実行することはできません。幸いなことに、DOMは(修正済み):

// Create a new DOMDocument
$dom = new DOMDocument('1.0', 'utf-8');

// Create the DocumentElement
$documentElement = $dom->appendChild($dom->createElement('objects'));

// Loop the SimpleXML elements and import them into DOM
foreach ($val as $element) {
  $documentElement->appendChild($dom->importNode(dom_import_simplexml($element), TRUE));
}

// Save to file
$dom->save("c:\\aaa.xml");
于 2012-05-21T12:36:20.733 に答える