我有两个XML树,并希望将一棵树作为叶子添加到另一棵树.
显然:
$tree2->addChild('leaf', $tree1);
Run Code Online (Sandbox Code Playgroud)
不起作用,因为它只复制第一个根节点.
好吧,那么我想我会遍历整个第一棵树,将每个元素逐个添加到第二棵树.
但是考虑这样的XML:
<root>
aaa
<bbb/>
ccc
</root>
Run Code Online (Sandbox Code Playgroud)
我如何访问"ccc"?tree1->children()只返回"bbb"....
例如,我创建了DOMDocument这样的:
<?php
$implementation = new DOMImplementation();
$dtd =
$implementation->createDocumentType
(
'html', // qualifiedName
'-//W3C//DTD XHTML 1.0 Transitional//EN', // publicId
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-'
.'transitional.dtd' // systemId
);
$document = $implementation->createDocument('', '', $dtd);
$elementHtml = $document->createElement('html');
$elementHead = $document->createElement('head');
$elementBody = $document->createElement('body');
$elementTitle = $document->createElement('title');
$textTitre = $document->createTextNode('My bweb page');
$attrLang = $document->createAttribute('lang');
$attrLang->value = 'en';
$document->appendChild($elementHtml);
$elementHtml->appendChild($elementHead);
$elementHtml->appendChild($attrLang);
$elementHead->appendChild($elementTitle);
$elementTitle->appendChild($textTitre);
$elementHtml->appendChild($elementBody);
Run Code Online (Sandbox Code Playgroud)
那么,现在,如果我有一些像这样的xhtml字符串:
<?php
$xhtml = '<h1>Hello</h1><p>World</p>';
Run Code Online (Sandbox Code Playgroud)
如何在<body>我的节点中导入它DOMDocument?
就目前而言,我发现的唯一解决方案是这样的:
<?php
$simpleXmlElement = new SimpleXMLElement($xhtml);
$domElement = dom_import_simplexml($simpleXmlElement);
$domElement …Run Code Online (Sandbox Code Playgroud) 我有以下XML(string1):
<?xml version="1.0"?>
<root>
<map>
<operationallayers>
<layer label="Security" type="feature" visible="false" useproxy="true" usePopUp="all" url="http://stackoverflow.com"/>
</operationallayers>
</map>
</root>
Run Code Online (Sandbox Code Playgroud)
我有这段XML(string2):
<operationallayers>
<layer label="Teste1" type="feature" visible="false" useproxy="true" usePopUp="all" url="http://stackoverflow.com"/>
<layer label="Teste2" type="dynamic" visible="false" useproxy="true" usePopUp="all" url="http://google.com"/>
</operationallayers>
Run Code Online (Sandbox Code Playgroud)
我使用函数simplexml_load_string将两者都导入到各自的var:
$xml1 = simplexml_load_string($string1);
$xml2 = simplexml_load_string($string2);
Run Code Online (Sandbox Code Playgroud)
现在,我想为string2的节点'operationslayers'替换string1的节点'operationallayers',但是如何?
SimpleXMLElement类没有像DOM那样的方法'replaceChild'.