如何将元素插入子节点

时间:2019-01-03 15:54:13

标签: xml powershell

我正在尝试在现有的XML拓扑中插入一个额外的“集群”。 原始XML:

[xml]$XmlObj = '<?xml version="1.0"?>
<Topology>
<Cluster Fqdn="db001.local">
<ClusterId SiteId="1" Number="1"/>
<Machine Fqdn="db001.local" UpgradeDomain="db001.local"/>
</Cluster>
</Topology>'

很好。现在,我想再添加一个集群:

[xml]$NewCluster = '<Cluster Fqdn="sp001.local">
<ClusterId SiteId="1" Number="1"/>
<Machine Fqdn="sp001.local" UpgradeDomain="sp001.local"/>
</Cluster>'

我尝试过:

$XmlObj.Topology.Cluster.AppendChild($NewCluster.Cluster)

返回错误。 "The node to be inserted is from a different document context."

我在做什么错了?

2 个答案:

答案 0 :(得分:4)

如错误所示,您不能只是直接从另一个文档附加子节点。

首先,您必须将其导入到目标文档上下文中

$ImportedCluster = $XmlObj.ImportNode($NewCluster.Cluster, $true)

现在我们可以附加它了!我假设您打算将新的Cluster节点附加到Topology子节点,而不是现有的Cluster节点:

$XmlObj.Topology.AppendChild($ImportedCluster)

答案 1 :(得分:3)

class LogSendingMessage { public function __construct(){} public function handle($event): void { dd($event); } } 的本质是:它更改XML节点的{ "message":{}, "data":{"locale":"fr","primaryColor":"#222222", ... } } 属性。只有在父文档和子文档都存在于同一文档中的情况下,该操作才能成功。

您可以import个外部节点进入当前文档。这将创建一个克隆,该克隆然后属于新文档,可以将其附加到新的父级而不会出现问题。

AppendChild()
相关问题