вывод или запись в XML-файл? - PullRequest
1 голос
/ 15 декабря 2010
$fp = fopen('data.txt', 'r');

$xml = new SimpleXMLElement('<allproperty></allproperty>');

while ($line = fgetcsv($fp)) {
   if (count($line) < 4) continue; // skip lines that aren't full

   $node = $xml->addChild('aproperty');
   $node->addChild('postcode', $line[0]);
   $node->addChild('price', $line[1]);
   $node->addChild('imagefilename', $line[2]);
   $node->addChild('visits', $line[3]);
}

echo $xml->saveXML();

Я использую этот сценарий для преобразования текстового файла в XML-файл, но я хочу вывести его в файл, как я могу сделать это simpleXML, ура

Ответы [ 2 ]

6 голосов
/ 15 декабря 2010
Функция

file_put_contents сделает это. Функция берет имя файла и некоторый контент и сохраняет его в файл.

Итак, повторяя свой пример, вы бы просто заменили выражение echo на file_put_contents.

$xml = new SimpleXMLElement('<allproperty></allproperty>');
$fp = fopen('data.txt', 'r');

while ($line = fgetcsv($fp)) {
   if (count($line) < 4) continue; // skip lines that aren't full

   $node = $xml->addChild('aproperty');
   $node->addChild('postcode', $line[0]);
   $node->addChild('price', $line[1]);
   $node->addChild('imagefilename', $line[2]);
   $node->addChild('visits', $line[3]);
}

file_put_contents('data_out.xml',$xml->saveXML());
1 голос
/ 15 декабря 2010

Для записи, вы можете использовать asXML () для этого. Я имею в виду, это прямо в руководстве , просто прочитайте его, и ваша жизнь станет легче. (я полагаю, возможно, для некоторых проще спросить StackOverflow об основных вещах)

Кроме того, и этот более косвенный, вам не обязательно использовать addChild() для каждого ребенка. Если у этого имени нет дочернего элемента, его можно назначить напрямую, используя нотацию свойства объекта:

$fp = fopen('data.txt', 'r');

$xml = new SimpleXMLElement('<allproperty />');

while ($line = fgetcsv($fp)) {
   if (count($line) < 4) continue; // skip lines that aren't full

   $node = $xml->addChild('aproperty');
   $node->postcode      = $line[0];
   $node->price         = $line[1];
   $node->imagefilename = $line[2];
   $node->visits        = $line[3];
}

$xml->asXML('data.xml');
...