【发布时间】:2020-03-11 22:53:03
【问题描述】:
有没有办法告诉 SimpleXMLElement 将新的孩子放在新的一行?
我在现有 XML 文件的末尾附加了一行。该文件如下所示:
<markers>
<marker id="2" name="Diane Gold, CORPORATE TAI CHI means do it in a group." address="Boca Raton, FL 33432, USA" lat="26.340200" lng="-80.081400" type="school"/>
<marker id="3" name="Tai Chi - Stress Management and Relaxation Technology" address="10100 Roe Ave, Overland Park, KS 66207, USA" lat="38.945300" lng="-94.639400" type="school"/>
<marker id="4" name="Wise Orchid Taijiquan and QiGong" address="2002 E Union St, Seattle, WA 98122, USA" lat="47.613200" lng="-122.306000" type="school"/>
</marker>
我正在使用我创建的一个看起来像这样的函数在文件末尾添加一行:
$xmlstr=file_get_contents('my_filename.xml');
$address=get_address_string($event['eventtag'],'eventtag','events');
echo($xmlstr);
$sxe = new SimpleXMLElement($xmlstr);
$marker = $sxe->addChild('marker');
$marker->addAttribute('id', $event['eventid']);
$marker->addAttribute('name', $event['eventname']);
$marker->addAttribute('address', $address);
$marker->addAttribute('lat', $event['latitude_dd']);
$marker->addAttribute('lng', $event['longitude_dd']);
$marker->addAttribute('type', 'event');
echo $sxe->asXML('my_filename.xml');
}
问题是它添加了新元素而没有任何换行:
<marker id="" name="Newest Event for Testing" address="1 Arrowhead Drive, , Douglassville, PA, 19518 USA" lat="" lng="" type="event"/><marker id="" name="Newest Event for Testing" address="1 Arrowhead Drive, , Douglassville, PA, 19518 USA" lat="" lng="" type="event"/><marker id="" name="Kutztown University World Tai Chi Day 2020" address="1 Arrowhead Drive, , Douglassville, PA, 19518 USA" lat="" lng="" type="event"/><marker id="1299" name="A Newer WTCD test event" address="1 Arrowhead Drive, , Douglassville, PA, 19518 USA" lat="" lng="" type="event"/><marker id="1302" name="Newest Event for Testin2" address="1 Arrowhead Drive, , Douglassville, PA, 19518 USA" lat="" lng="" type="event"/></markers>
我已经尝试了几十种不同的方法,并且我已经阅读了 stackoverflow 上关于新行主题的所有内容。大多数处理文件被读入后的格式,或者使用 DOM 或 SimpleXMLElement 以外的其他东西来写入 xml。我只是在学习这些东西,并且已经用尽我的知识来了解如何在那里换行。有没有人知道我还能尝试什么?
谢谢 CJ
【问题讨论】:
-
不,似乎没有办法做到这一点。标签之间的空格在 XML 中是无关紧要的,
SimpleXML没有任何方法可以自定义格式。 -
更复杂的
DOMDocument也没有。 -
@Barmar 取决于格式。空格可以有意义。以 XHTML 中的
pre为例。