Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell-XML-将多个元素附加到远程桌面连接管理器文件中的节点_Xml_Powershell_Nodes_Appendchild - Fatal编程技术网

PowerShell-XML-将多个元素附加到远程桌面连接管理器文件中的节点

PowerShell-XML-将多个元素附加到远程桌面连接管理器文件中的节点,xml,powershell,nodes,appendchild,Xml,Powershell,Nodes,Appendchild,$xmlFrag=$NewXMLNode.innerXml Cannot convert argument "0", with value: "<removed for ease of reading>" value of type "System.String" to type "System.Xml.XmlNode"." At line:1 char:1 + $node.AppendChild($xmlFrag) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~

$xmlFrag=$NewXMLNode.innerXml

Cannot convert argument "0", with value: 
"<removed for ease of reading>" value of type "System.String" to type "System.Xml.XmlNode"."
At line:1 char:1
+ $node.AppendChild($xmlFrag)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
无法转换参数“0”,其值为:
将“System.String”类型的值改为“System.Xml.XmlNode”
第1行字符:1
+$node.AppendChild($xmlFrag)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[],MethodException
+FullyQualifiedErrorId:MethodArgumentConversionInvalidCastArgument

有人知道我如何修复这个错误吗?或者有没有比我使用的方法更好的方法在XML文件中工作?

使用这个:
$xmlFrag.InnerXml=$NewXMLNode.InnerXml

而不是您原来的分配
$xmlFrag=$NewXMLNode.innerXml

原始赋值将xml片段替换为字符串,因此当您尝试使用带字符串(而不是片段)的appendchild方法时,它将失败

进一步解释

通过查看以下独立演示,您可以看到结果赋值类型的差异

[xml]$NewXMLNode = "<xml></xml>"

#create document fragment to prevent error regarding no root node
$xmlFrag = $xDoc.CreateDocumentFragment()
Write-Host 'Wiping the fragment and assigning a string' -ForegroundColor Yellow
$xmlFrag = $NewXMLNode.innerXml 
$xmlFrag.GetType() | out-string | Write-Host

$xmlFrag = $xDoc.CreateDocumentFragment()
Write-Host 'Proper assignment of the node xml to the newly created fragment' -ForegroundColor Green
$xmlFrag.innerXml = $NewXMLNode.innerXml
$xmlFrag.GetType() | out-string | Write-Host
[xml]$NewXMLNode=“”
#创建文档片段以防止关于无根节点的错误
$xmlFrag=$xDoc.CreateDocumentFragment()
写入主机“擦除片段并分配字符串”-ForegroundColor黄色
$xmlFrag=$NewXMLNode.innerXml
$xmlFrag.GetType()|输出字符串|写入主机
$xmlFrag=$xDoc.CreateDocumentFragment()
写入主机“将节点xml正确分配给新创建的片段”-ForegroundColor绿色
$xmlFrag.innerXml=$NewXMLNode.innerXml
$xmlFrag.GetType()|输出字符串|写入主机
第一个示例是您执行的赋值。由于无法向appendchild提供字符串,因此赋值失败。第二个赋值是您需要执行的。XmlDocumentFragment类型被正确保留,与appendchild方法一起使用时会成功