使用php simplexml工具更新格式化文本中的xml文件

时间:2013-01-28 09:16:24

标签: php xml xml-parsing simplexml

  

可能重复:
  PHP XML how to output nice format

我正在使用这个

<?php

$file = '/Applications/MAMP/htdocs/payback_service/payback_records.xml';

if (file_exists($file)) {
    $sxe = simplexml_load_file($file);  
    $movie = $sxe->addChild('record');
    $movie->addChild('lat', 'PHP2: More Parser Stories');
    $movie->addChild('lng', 'This is all about the people who make it work.');
    $movie->addChild('address', 'PHP2: More Parser Stories');
    $movie->addChild('picture_link', 'PHP2: More Parser Stories');
    $movie->addChild('message', 'PHP2: More Parser Stories');
    $sxe->asXML($file);


} else {
    exit('Failed to open '.$file);
}

我希望以格式化的形式更新xml的文本。

现在我得到了这个:

<record><lat>PHP2: More Parser Stories</lat><lng>This is all about the people who make it work.</lng><address>PHP2: More Parser Stories</address><picture_link>PHP2: More Parser Stories</picture_link><message>PHP2: More Parser Stories</message></record><record><lat>PHP2: More Parser Stories</lat><lng>This is all about the people who make it work.</lng><address>PHP2: More Parser Stories</address><picture_link>PHP2: More Parser Stories</picture_link><message>PHP2: More Parser Stories</message></record></root>

我需要这个文件:

<record>
    <lat>1.5</lat>
    <lng>-8.5</lng>
    <address>this is the address</address>
    <picture_link>this is picture link</picture_link>
    <message>this is the message</message>
</record>
<record>
    <lat>1.5</lat>
    <lng>0.248</lng>
    <address>PHP2: More Parser Stories</address>
    <picture_link>PHP2: More Parser Stories</picture_link>
    <message>PHP2: More Parser Stories</message>
</record>

1 个答案:

答案 0 :(得分:1)

我不认为SimpleXML支持格式化。但是DOMDocument class会这样做:

<?php

$file = '/Applications/MAMP/htdocs/payback_service/payback_records.xml';

if (file_exists($file)) {
    $sxe = simplexml_load_file($file);  
    $movie = $sxe->addChild('record');
    $movie->addChild('lat', 'PHP2: More Parser Stories');
    $movie->addChild('lng', 'This is all about the people who make it work.');
    $movie->addChild('address', 'PHP2: More Parser Stories');
    $movie->addChild('picture_link', 'PHP2: More Parser Stories');
    $movie->addChild('message', 'PHP2: More Parser Stories');

    $dom = new DOMDocument('1.0');
    $dom->preserveWhiteSpace = false;
    $dom->formatOutput = true;
    $dom->loadXML($sxe->asXML());
    echo $dom->saveXML();

} else {
    exit('Failed to open '.$file);
}