我正在尝试在现有的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."
我在做什么错了?
答案 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()