在特定位置将子对象追加到XML
我有一个XML文件,如下所示:在特定位置将子对象追加到XML,xml,powershell,appendchild,Xml,Powershell,Appendchild,我有一个XML文件,如下所示: ... ... ... ... ... 现在,考虑到正确的位置,即名为“Bookings”的父文件,我想将以下XML文件附加到第一个XML文件中: ... 因此,最终的XML文件应该如下所示: ... ... ... ... ... ... 目前,我的PowerShell脚本如下所示: [xml]$x=获取内容C:\Users\user\Desktop\exitingViews.xml; [xml]$y=获取内容C:\Users\user\Deskto
...
...
...
...
...
现在,考虑到正确的位置,即名为“Bookings”的父文件,我想将以下XML文件附加到第一个XML文件中:
...
因此,最终的XML文件应该如下所示:
...
...
...
...
...
...
目前,我的PowerShell脚本如下所示:
[xml]$x=获取内容C:\Users\user\Desktop\exitingViews.xml;
[xml]$y=获取内容C:\Users\user\Desktop\newView.xml;
$x.ViewsFile.Categories.ViewCategory.Views.AppendChild($x.ImportNode($y.ViewCategory.Views.View),$true));
$x.Save('C:\Users\user\Desktop\final.xml');
但它仅将新视图附加到最后一个类别
是否有任何“简单”的可能性来定义子节点的附加位置?当您使用
System.XML.XmlDocument
提供的PowerShell对XML DOM的方便改编时,
操作符执行,这意味着像.ViewCategories
这样的访问将以该名称返回所有子元素
因此,您需要过滤.ViewCategories
数组,以获取感兴趣的特定元素,您可以使用(PSv4+):
或者,使用XPath查询来定位感兴趣的元素,方法是:
注意:我使用了一个快捷方式
/
,它可以在文档中的任何位置找到viewcategy
元素,但您可以将整个路径拼写为/ViewsFile/Categories/viewcategy[@Name=“Bookings”]
,这会更快并避免歧义。当您使用PowerShell对System.XML.XmlDocument
提供的XML DOM进行方便的改编时,
操作符将执行该操作,这意味着诸如.ViewCategories
之类的访问将以该名称返回所有子元素
因此,您需要过滤.ViewCategories
数组,以获取感兴趣的特定元素,您可以使用(PSv4+):
或者,使用XPath查询来定位感兴趣的元素,方法是: 注意:我使用了一个快捷方式
/
,它可以在文档中的任何位置找到viewcategy
元素,但是您可以将整个路径拼写为/ViewsFile/Categories/viewcategy[@Name=“Bookings”]
,这会更快,避免歧义
$x.ViewsFile.Categories.ViewCategory.Where({ $_.Name -eq 'Bookings' }).Views.AppendChild($x.ImportNode(($y.ViewCategory.Views.View), $true))
$x.SelectSingleNode('//ViewCategory[@Name = "Bookings"]').Views.AppendChild($x.ImportNode(($y.ViewCategory.Views.View), $true))