итерация записи XML - PullRequest
       11

итерация записи XML

0 голосов
/ 11 августа 2009

Я новичок здесь и в PHP, я пытаюсь написать xml-файл, который имел в качестве источника XML-файл.

Когда я читаю XML и использую команду echo, я вижу все записи исходного XML.

но когда я хочу записать его в файл XML, я вижу только одну запись.

Я уже многое прочитал: кое-что, что я нашел, было использованием массива использования, использования xpath или simpleXML. Для кода в эхо-части, которую я использую foreach, возможно ли это с элементами DOM?

Код: `

$ objDOM = новый DOMDocument ();

$ dom1 = новый DOMDocument ();

$ objDOM-> preserveWhiteSpace = false;

$ objDOM-> нагрузки ( "googlepoints.xml"); // убедитесь, что путь правильный

$ photo = $ objDOM-> getElementsByTagName ("photo");

foreach ($ photo как $ value) { $ album = $ value-> getElementsByTagName ("album"); $ albu = $ album-> item (0) -> nodeValue;

$description = $value->getElementsByTagName("description");
$descriptio = $description->item(0)->nodeValue;

$title = $value->getElementsByTagName("title");
$titl = $title->item(0)->nodeValue;

$link = $value->getElementsByTagName("link");
$lin = $link->item(0)->nodeValue;

$guid = $value->getElementsByTagName("guid");
$gui = $guid->item(0)->nodeValue;

$gps = $value->getElementsByTagName("gps");
$gp = $gps->item(0)->nodeValue;

echo "$task :: $detail :: $albu :: $descriptio :: $titl :: $lin :: $gui :: $medi :: $gp  <br>";


// create doctype
$dom1 = new DOMDocument("1.0", 'utf-8');
$dom1->formatOutput = true;

    $collection = $dom1->appendchild($dom1->createElement("collection"));

        // create child element "photo"
        $photo = $collection->appendChild($dom1->createElement("photo"));


        // create child element "album"
        $album = $photo->appendChild($dom1->createElement("album"));
        $album->appendChild($dom1->createTextNode("$albu"));

        // create child element "description"
        $description = $photo->appendChild($dom1->createElement("description"));
        $description->appendChild($dom1->createTextNode("$descriptio"));

        // create child element "title"
        $title = $photo->appendChild($dom1->createElement("title"));
        $title->appendChild($dom1->createTextNode("$titl"));

        // create child element "link"
        $link = $photo->appendChild($dom1->createElement("link"));
        $link->appendChild($dom1->createTextNode("$lin"));

        // create text node
        $guid = $photo->appendChild($dom1->createElement("guid"));
        $guid->appendChild($dom1->createTextNode("$gu"));

        // create child element "gps"
        $gps = $photo->appendChild($dom1->createElement('gps'));
        //$gps->appendChild($dom1->createTextNode("$gp"));
        $gps->appendChild($dom1->createTextNode("$gp"));

} // сохранить дерево в файл $ Dom1-> Save ( "order12.xml");

    //// save tree to string
    //$dom1 = $dom1->save("order77.xml");

?> `

Выход из файла XML <?xml version="1.0" encoding="utf-8"?> <collection> <photo> <album>Landschap</album> <description>Foto's genomen op een mooie koude winterdag.</description> <title>nil</title> <link>index.html</link> <guid></guid> <gps>22°39'5" N 5°40'54" E</gps> </photo> </collection> Только там, предположим, будет 5 из этих записей.

Может ли кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 12 августа 2009

Переменная $dom1 должна быть установлена ​​вне цикла foreach.

т.е.

$dom1 = new DOMDocument("1.0", 'utf-8');
$dom1->formatOutput = true;

foreach($photo as $value) {

     $dom1->appendChild(...);
     ...
}

$xml = $dom1->save();

Это только одна запись, потому что вы перезаписываете $dom1 каждый раз, когда у вас есть комментарий // create doctype

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...