是否可以使用PHP的SimpleXML函数从头开始创建XML对象?通过函数列表,可以将现有的XML字符串导入到可以操作的对象中,但如果我只想从头开始以编程方式生成XML对象,那么最好的方法是什么?
我发现你可以使用simplexml_load_string()并传入你想要的根字符串,然后你有一个你可以通过添加子项来操作的对象......虽然这看起来像是一种黑客,因为我必须实际上,在加载之前,将一些XML硬编码到字符串中.
我已经使用DOMDocument函数完成了它,虽然它有点令人困惑,因为我不确定DOM与创建纯XML文档有什么关系......所以也许它的命名很糟糕:-)
你当然可以.例如.
"); $newsXML->addAttribute('newsPagePrefix', 'value goes here'); $newsIntro = $newsXML->addChild('content'); $newsIntro->addAttribute('type', 'latest'); Header('Content-type: text/xml'); echo $newsXML->asXML(); ?>
产量
玩得开心.
在PHP5中,您应该使用Document Object Model类.例:
$domDoc = new DOMDocument; $rootElt = $domDoc->createElement('root'); $rootNode = $domDoc->appendChild($rootElt); $subElt = $domDoc->createElement('foo'); $attr = $domDoc->createAttribute('ah'); $attrVal = $domDoc->createTextNode('OK'); $attr->appendChild($attrVal); $subElt->appendChild($attr); $subNode = $rootNode->appendChild($subElt); $textNode = $domDoc->createTextNode('Wow, it works!'); $subNode->appendChild($textNode); echo htmlentities($domDoc->saveXML());
请在这里查看我的答案.正如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 Ø bject 中号奥德尔; 这是XML文档中的标准化API.