php - PHP 7.1 XML domDocument 克隆节点和子节点
问题描述
我必须用 PHP 和 DomDocument 解决这个问题(simplexml 也可以)。我用谷歌搜索了很多,但没有找到一个正确的例子来学习如何做:
我有以下 eBay XML
<?xml version="1.0" encoding="utf-8"?>
<ReviseInventoryStatusRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>INSERT_TOKEN</eBayAuthToken>
</RequesterCredentials>
<InventoryStatus>
<ItemID> ItemIDType (string) </ItemID>
<Quantity> int </Quantity>
<SKU> SKUType (string) </SKU>
<StartPrice> AmountType (double) </StartPrice>
</InventoryStatus>
<ErrorLanguage>en-US</ErrorLanguage>
<Version> string </Version>
<WarningLevel>Low</WarningLevel>
</ReviseInventoryStatusRequest>
我需要克隆(实际上是 4 次)<InventoryStatus>
节点及其所有子节点:
<InventoryStatus>
<ItemID> ItemIDType (string) </ItemID>
<Quantity> int </Quantity>
<SKU> SKUType (string) </SKU>
<StartPrice> AmountType (double) </StartPrice>
</InventoryStatus>
并在当前节点下追加
请给一些提示
谢谢!
解决方案
DOMDocument 在处理这样的事情上要好得多,并且可以只用 克隆节点cloneNode()
,传递true
也可以复制内容的深度克隆。然后,您可以将节点添加回您需要的位置...
$dom = new DOMDocument();
$dom->load("data.xml");
$is = $dom->getElementsByTagName("InventoryStatus");
$dom->documentElement->appendChild($is[0]->cloneNode(true));
$dom->documentElement->appendChild($is[0]->cloneNode(true));
$dom->documentElement->appendChild($is[0]->cloneNode(true));
$dom->documentElement->appendChild($is[0]->cloneNode(true));
echo $dom->saveXML();
推荐阅读
- python - Python 错误:TypeError:需要一个类似字节的对象,而不是“str”
- sql - 基于相关行数的 SQL 过滤查询
- c# - 在 EntityFramworkCore.InMemory 提供程序中添加 Id = 0 的实体时出现问题
- python - 重新布线 2d 网格网络
- python - Python猜谜游戏-while循环只允许整数
- android - Android获取电话号码
- c# - 如何在 C# 中用另一个 XML 覆盖?
- java - 简单的 android tcp 应用程序不会更新主线程
- javascript - 将文本选择转换为突出显示的元素
- r - 小标题的枢轴式变换?