Подтвердить что ты не робот

Формат XML-строки

Каков наилучший способ форматирования XML в классе PHP.

$xml = "<element attribute=\"something\">...</element>";

$xml = '<element attribute="something">...</element>';

$xml = '<element attribute=\'something\'>...</element>';

$xml = <<<EOF
<element attribute="something">
</element>
EOF;

Я уверен, что это последний!

4b9b3361

Ответ 2

Эта функция работает идеально, так как вам не нужно использовать какую-либо библиотеку xml dom или ness, просто передайте в нее генерированную строку xml, и она будет анализировать и генерировать новую с помощью вкладок и разрывов строк.

function formatXmlString($xml){
    $xml = preg_replace('/(>)(<)(\/*)/', "$1\n$2$3", $xml);
    $token      = strtok($xml, "\n");
    $result     = '';
    $pad        = 0; 
    $matches    = array();
    while ($token !== false) : 
        if (preg_match('/.+<\/\w[^>]*>$/', $token, $matches)) : 
          $indent=0;
        elseif (preg_match('/^<\/\w/', $token, $matches)) :
          $pad--;
          $indent = 0;
        elseif (preg_match('/^<\w[^>]*[^\/]>.*$/', $token, $matches)) :
          $indent=1;
        else :
          $indent = 0; 
        endif;
        $line    = str_pad($token, strlen($token)+$pad, ' ', STR_PAD_LEFT);
        $result .= $line . "\n";
        $token   = strtok("\n");
        $pad    += $indent;
    endwhile; 
    return $result;
}

Ответ 3

//Вот пример использования XMLWriter

$w = new XMLWriter;
$w->openMemory();
$w->setIndent(true);
  $w->startElement('foo');
    $w->startElement('bar');
      $w->writeElement("key", "value");
    $w->endElement();
  $w->endElement();
echo $w->outputMemory();

//out put

<foo> 
 <bar> 
  <key>value</key> 
 </bar> 
</foo> 

Ответ 4

Первое лучше, если вы планируете внедрять ценности в XML, второе лучше для людей читать. Ничего хорошего, если вы действительно работаете с XML.

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

Я лично использовал бы PHP-класс simplexml, он очень прост в использовании, и он встроил поддержку xpath, чтобы детализировать данные, возвращенные в XML, сон.