Использование SimpleXML для создания объекта XML с нуля
Можно ли использовать функции PHP SimpleXML для создания объекта XML с нуля? Просмотрев список функций, есть способы импортировать существующую строку XML в объект, который вы затем можете манипулировать, но если я просто хочу сгенерировать объект XML программно с нуля, что лучший способ сделать это?
Я понял, что вы можете использовать simplexml_load_string() и передать нужную корневую строку, а затем у вас есть объект, с которым вы можете манипулировать, добавляя детей... хотя это похоже на хак, поскольку Я должен на самом деле жестко закодировать некоторый XML в строку, прежде чем ее можно будет загрузить.
Я сделал это, используя функции DOMDocument, хотя это немного запутывает, потому что я не уверен, что DOM имеет отношение к создание чистого XML-документа... так что, возможно, это просто плохо названо: -)
Ответы
Ответ 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-документы.