Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> XML + XML = 2 * XML
sebas
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 12.01.2005

Ostrzeżenie: (0%)
-----


Witam (uwaga jestem początkujący)
Mam np 2 (lub więcej) plików xml z pewnymi danymi (struktura tych plików jest identyczna).
Czy istnieje możliwość scalenia tych plików w jeden nowy plik, bez koniecznosci parsowania kazdego ?

np. w plik1.xml jest <cena wartosc = "2.5"/>,
w plik2.xml jest <cena wartosc = "3.5"/>

To po takiej operacji w pliku 3 powinna byc informacja:
<cena wartosc = "6.0"/>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
MaKARON
post
Post #2





Grupa: Zarejestrowani
Postów: 114
Pomógł: 1
Dołączył: 17.07.2003

Ostrzeżenie: (0%)
-----


Niestety chyba sam nie bardzo wiesz o czym piszesz... jak mozna to zrobic, jezeli nie chcesz ich przetwazac a jednoczesnie chcesz informacje z nich!!
Go to the top of the page
+Quote Post
bela
post
Post #3


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

Ostrzeżenie: (0%)
-----


Cytat(manual)
A simple way to merge two SimpleXML objects.

  1. <?php
  2. /**
  3. * Pumps all child elements of second SimpleXML object into first one.
  4. *
  5. * @param object $xml1 SimpleXML object
  6. * @param object $xml2 SimpleXML object
  7. * @return void
  8. */
  9. function simplexml_merge (SimpleXMLElement &$xml1, SimpleXMLElement $xml2)
  10. {
  11.  // convert SimpleXML objects into DOM ones
  12.  $dom1 = new DomDocument();
  13.  $dom2 = new DomDocument();
  14.  $dom1->loadXML($xml1->asXML());
  15.  $dom2->loadXML($xml2->asXML());
  16.  
  17.  // pull all child elements of second XML
  18.  $xpath = new domXPath($dom2);
  19.  $xpathQuery = $xpath->query('/*/*');
  20.  for ($i = 0; $i < $xpathQuery->length; $i++)
  21.  {
  22.  // and pump them into first one
  23.  $dom1->documentElement->appendChild(
  24.  $dom1->importNode($xpathQuery->item($i), true));
  25.  }
  26.  $xml1 = simplexml_import_dom($dom1);
  27. }
  28.  
  29. $xml1 = simplexml_load_string('<root><child>child 1</child></root>');
  30. $xml2 = simplexml_load_string('<root><child>child 2</child></root>');
  31. simplexml_merge($xml1, $xml2);
  32. echo($xml1->asXml());
  33. ?>
  34.  
  35. Will output:
  36. <?xml version=&#092;"1.0\"?>
  37. <root>
  38.  <child>child 1</child>
  39.  <child>child 2</child>
  40. </root>


Ten post edytował bela_666 13.01.2005, 16:26:16
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 03:05