【问题标题】:PHP XMLWriter output format for testing用于测试的 PHP XMLWriter 输出格式
【发布时间】:2018-09-30 09:27:54
【问题描述】:

我的 XML 消息的收件人要求我在每个元素的末尾添加换行符。他们要求这样做,因为消息直接进入 Oracle 数据库,他们只能将其视为一个长字符串,这使得测试变得困难。他们目前的解决方法是在 Internet Explorer 中打开它,但这需要时间

有没有办法在每个元素的末尾添加一个换行符?

我尝试在每个元素的末尾添加以下内容

print (chr(13).chr(10)); 

但这对输出没有影响。这是我的消息的开始

$writer = new XMLWriter();  
$writer->openURI('php://output');
$writer->startDocument('1.0','UTF-8');   
$writer->setIndent(TRUE);   
    $writer->startElement('vehicleServiceRequest'); 
        $writer->startElement('vehicleDetails');
            $writer->writeElement('companyIdentifier', $AIS_transmission_code);
            $writer->writeElement('transportCompanyName', $user['company_name']);
            $writer->writeElement('dispatchNumber', $booking_reference);                            
            $writer->writeElement('plannedDispatchDate', date("Y-m-dTH:i:s"));                      // We use today as the planned dispatch date
            $writer->writeElement('dispatchPostCode', $user['postcode']);                           
            $writer->writeElement('dispatchCountryCode', 'UK');                                     

这是输出

<?xml version="1.0" encoding="UTF-8"?><vehicleServiceRequest><vehicleDetails><companyIdentifier>001</companyIdentifier><transportCompanyName>Mixed Freight Services</transportCompanyName><dispatchNumber>174672</dispatchNumber>

【问题讨论】:

  • 我确实查看了该答案,但我正在寻找消息中的 CRLF 以使其更具可读性,而不是该数据中的换行符。也就是说我刚刚尝试过 $writer->setIndentString(PHP_EOL);这是工作的一部分。我现在在每个元素的末尾有三个换行符,但在 Notepad++ 中查看时丢失了整体格式

标签: php xmlwriter


【解决方案1】:

我知道这是一个旧线程,但由于我没有看到任何有用的回复,下面是您缺少正确缩进 XML 文件的代码行。

$writer->setIndent(TRUE); // after your line of code add the below line
$writer->setIndentString('    '); // here you just have to add the string you wish to use for indentation; in this case I used 4 spaces

【讨论】:

  • 谢谢,我现在就补充。
猜你喜欢
  • 2013-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多