将文本文件转换为xml

时间:2014-06-23 05:43:46

标签: php xml text

我是php的新手,因此我有一个初学者的问题。我做了一个包含一些简单数据的文本文件,我想将这些数据保存到xml文件中。

我用foreach循环尝试过它,但是我在这一点上很挣扎。我知道问题是什么,但我愚蠢地解决问题。

这是我的文本文件:

Lea
mueller
lea_mueller@web.de
10.03.1984
green
Malte
cool
äödksf@kdölf.com
23.12.54
red
Peter
Pam
ödlfs@we.de
23.23.2323
pink

我的php:

<?php

$file = file("daten.txt");

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

$data = $dom->createElement('data');
$dom->appendChild($data);

foreach($file as $value){

    $user = $dom->createElement("user");
    $data->appendChild($user);

        $vorname = $dom->createElement("vorname", "$value");
        $user->appendChild($vorname);

        $nachname = $dom->createElement("nachname", "$value");
        $user->appendChild($nachname);

        $email = $dom->createElement("email", "$value");
        $user->appendChild($email);

        $bday = $dom->createElement("bday", "$value");
        $user->appendChild($bday);

        $color = $dom->createElement("color", "$value");
        $user->appendChild($color);

        }

$dom->save("new.xml");

print_r($file);
?>

我总是四次得到名字,姓氏,电子邮件,bday和颜色。我知道为什么,但我不知道,我怎么能以另一种方式做到这一点?

1 个答案:

答案 0 :(得分:1)

在那个代码中你到了那里,在我看来你多次使用$ value希望它改变到下一行,我认为它不会

尝试用以下方法替换你的foreach循环:

for ($x = 0; $x<count($file); $x+=5){

    $user = $dom->createElement("user");
    $data->appendChild($user);

        $vorname = $dom->createElement("vorname", trim($file[$x]));
        $user->appendChild($vorname);

        $nachname = $dom->createElement("nachname", trim($file[$x+1]));
        $user->appendChild($nachname);

        $email = $dom->createElement("email", trim($file[$x+2]));
        $user->appendChild($email);

        $bday = $dom->createElement("bday", trim($file[$x+3]));
        $user->appendChild($bday);

        $color = $dom->createElement("color", trim($file[$x+4]));
        $user->appendChild($color);

        }

另外,请修复您的缩进。

让我知道这是否有效。

编辑:修复了循环条件下的分号用法。