$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();
im, используя этот скрипт для преобразования текстового файла в XML-файл, но я хочу вывести его в файл, как я могу сделать это simpleXML, приветствует
Функция 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());
Для записи вы можете использовать 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');