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

Использование SimpleXML для создания объекта XML с нуля

Можно ли использовать функции PHP SimpleXML для создания объекта XML с нуля? Просмотрев список функций, есть способы импортировать существующую строку XML в объект, который вы затем можете манипулировать, но если я просто хочу сгенерировать объект XML программно с нуля, что лучший способ сделать это?

Я понял, что вы можете использовать simplexml_load_string() и передать нужную корневую строку, а затем у вас есть объект, с которым вы можете манипулировать, добавляя детей... хотя это похоже на хак, поскольку Я должен на самом деле жестко закодировать некоторый XML в строку, прежде чем ее можно будет загрузить.

Я сделал это, используя функции DOMDocument, хотя это немного запутывает, потому что я не уверен, что DOM имеет отношение к создание чистого XML-документа... так что, возможно, это просто плохо названо: -)

4b9b3361

Ответ 1

Конечно. Например.

<?php
$newsXML = new SimpleXMLElement("<news></news>");
$newsXML->addAttribute('newsPagePrefix', 'value goes here');
$newsIntro = $newsXML->addChild('content');
$newsIntro->addAttribute('type', 'latest');
Header('Content-type: text/xml');
echo $newsXML->asXML();
?>

Выход

<?xml version="1.0"?>
<news newsPagePrefix="value goes here">
    <content type="latest"/>
</news>

Удачи.

Ответ 2

В PHP5 вы должны вместо этого использовать

Ответ 3

Пожалуйста, см. мой ответ здесь. Как отмечает dreamwerx.myopenid.com, это можно сделать с помощью SimpleXML, но расширение DOM будет лучшим и более гибким способом. Кроме того, существует третий способ: используя XMLWriter. Это гораздо проще в использовании, чем DOM, и поэтому я предпочитаю писать XML-документы с нуля.

$w=new XMLWriter();
$w->openMemory();
$w->startDocument('1.0','UTF-8');
$w->startElement("root");
    $w->writeAttribute("ah", "OK");
    $w->text('Wow, it works!');
$w->endElement();
echo htmlentities($w->outputMemory(true));

Кстати: DOM означает D ocument O bject M Odel; это стандартизованный API в XML-документы.