相关疑难解决方法(0)

SimpleXML:将一棵树附加到另一棵树

我有两个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"....

php simplexml

11
推荐指数
3
解决办法
2万
查看次数

如何在php DOMDocument中导入XML字符串

例如,我创建了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)

php xml xhtml simplexml domdocument

7
推荐指数
1
解决办法
1万
查看次数

如何用SimpleXMLElement PHP替换XML节点

我有以下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'.

php xml simplexml

6
推荐指数
1
解决办法
7999
查看次数

标签 统计

php ×3

simplexml ×3

xml ×2

domdocument ×1

xhtml ×1