0

我的服务器 PHP 版本 5.1.6 domxml 已启用,但是当我尝试执行时

// Start XML file, create parent node
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("markers");
$parnode = $doc->append_child($node);

它返回命运错误

Call to undefined function domxml_new_doc() 

我的服务器 php 信息是

    dom

DOM/XML enabled
DOM/XML API Version 20031129
libxml Version  2.6.26
HTML Support    enabled
XPath Support   enabled
XPointer Support    enabled
Schema Support  enabled
RelaxNG Support enabled
4

2 回答 2

2

有两种常见的方法可以做到这一点。

DOM文档

DOM XML 被弃用,取而代之。它遵循 W3C 规范,因此您具有典型的 DOM 方法,例如getElementsByTagNamegetElementByIdappendChildremoveChild等。它还使用适当的类,例如DOMElementDOMNodeDOMNodeList

$doc = new DOMDocument('1.0','utf-8');
$root = $doc->appendChild($doc->createElement('markers'));

// output
echo $doc->saveXML();

如果您已经知道如何在 Javascript 中遍历 DOM,那么您几乎已经知道如何在 PHP 中使用 DOMDocument 和其他相关类进行遍历。

我不知道为什么 Shankar 的回答被否决,除非有人支持下一种方法。

简单XML

SimpleXML 试图不辜负它的名字,只使用两个类并使用父子结构来遍历文档。

$doc = new SimpleXMLElement('<markers/>');

// output
echo $doc->asXML();

如果将元素视为字符串,则元素本身会评估其内容,并且可以像访问关联数组的元素一样访问属性。

$marker = $doc->addChild('marker');
$marker->addAttribute('color','red');

如果您真的不需要挂起对元素的引用,也可以这样做。但是,您不能使用此方法添加多个属性,因此您仍然需要使用以前的方法来添加新属性,而无需遍历整个文档。

$doc->addChild('marker')->addAttribute('color','red');

像这样访问您的元素和属性:

// red
echo $doc->marker[0]['color'];

要设置元素值,只需设置它。

$doc->marker[0] = 'Text Value';

// Text Value
echo $doc->marker[0];
于 2013-10-18T20:32:08.853 回答
0

你为什么不利用DOMDocument

更改您的代码

$doc = domxml_new_doc("1.0");
$node = $doc->create_element("markers");
$parnode = $doc->append_child($node);

$doc = new DOMDocument('1.0', 'iso-8859-1');
$node = $doc->createElement("markers");
$parnode = $doc->appendChild($node);
于 2013-10-18T17:35:55.573 回答