使用powershell将另一个子元素附加到xml

贾斯汀

我有以下xml文件。我想在其中添加一些内容,我尝试了几种不同的方法,但似乎无法正确解决。

这就是xml文件的样子。

<Root>
 <Device>
  <Name>c:</Name>
   <Time>
    <TimeOfCheck>2014.3.18.22.36.43</TimeOfCheck>
    <Size>120.14</Size>
    <FreeSpace>38.18</FreeSpace>
  </Time>
 </Device>
 <Device>
  <Name>x:</Name>
   <Time>
    <TimeOfCheck>2014.3.18.22.36.43</TimeOfCheck>
    <Size>23.23</Size>
    <FreeSpace>11.47</FreeSpace>
   </Time>
 </Device>
</Root>

我正在尝试添加

<Time>
 <TimeOfCheck>2014.3.18.22.36.43</TimeOfCheck>
 <Size>120.14</Size>
 <FreeSpace>25</FreeSpace>
</Time>

所以最终看起来像

<Root>
 <Device>
  <Name>c:</Name>
   <Time>
    <TimeOfCheck>2014.3.18.22.36.43</TimeOfCheck>
    <Size>120.14</Size>
    <FreeSpace>38.18</FreeSpace>
   </Time>
   <Time>
    <TimeOfCheck>2014.3.18.22.36.43</TimeOfCheck>
    <Size>120.14</Size>
    <FreeSpace>25</FreeSpace>
   </Time>
 </Device>
 <Device>
  <Name>x:</Name>
   <Time>
    <TimeOfCheck>2014.3.18.22.36.43</TimeOfCheck>
    <Size>23.23</Size>
    <FreeSpace>11.47</FreeSpace>
   </Time>
  </Device>
</Root>

这是我加载xml文件的代码,用于检查是否存在名为C:或D的节点:

# Set the File Name
$filePath = "C:\dump\Report.xml"

# load the values that we going to add to the file  
$disk = Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID,@{Name="Size";Expression={"{0:N2}" -f($_.Size/1GB)}},@{Name="FreeSpace";Expression={ "{0:N2}" -f ($_.FreeSpace/1GB) }},@{Name="Time";Expression={Get-Date -format yyyy.M.d.H.mm.ss}}

# check if the file exists 

If (Test-Path $filePath)
{#If the file exists 
  #load the file 
 [xml]$XmlExists = Get-Content $filePath

 foreach($obj in $disk)
 {$Node = "//Device/Name[text() ='" + $obj.DeviceID + "']"
  $NodesTest =$XmlExists.SelectNodes("$node")
    #check if the node exists 
      IF ($NodesTest.get_Count() -gt 0)
        {
      # The node exists but how do we add to it 

        }
     Else 
        {
         # The node does not exists how do we crate it 

        }
 }
}

编辑1#

好的,已经成功使用此代码使其正常工作。

$AppendPath = "//Device[Name/text() ='" + $obj.DeviceID + "']"
                # Build the xml to Append

                $Time = $XmlExists.CreateElement('Time')
                $TimeOfCheck = $XmlExists.CreateElement('TimeOfCheck')
                               $TimeOfCheck.set_InnerText($obj.time)
                $Size = $XmlExists.CreateElement('Size')
                        $Size.set_InnerText($obj.Size)
                $FreeSpace = $XmlExists.CreateElement('FreeSpace')
                             $FreeSpace.set_InnerText($obj.FreeSpace)
                #Append opjects

                $Time.AppendChild($TimeOfCheck)
                $Time.AppendChild($Size)
                $Time.AppendChild($FreeSpace)

                $NodeToAppendTo= $XmlExists.SelectSingleNode($AppendPath)
                $NodeToAppendTo.AppendChild($Time)
                $XmlExists.Save($filePath)
理查德

要插入节点,XmlElement类型上有很多方法(文档中每个元素一个实例)。

要将元素添加$ne为被XmlElement调用的最后一个子元素$xe

$xe.InsertAfter($ne, $xe.LastChild)

(如果$xe没有子项,则将没有子项,$xe.LastChild这意味着InsertAfter在子项列表的开头插入,如果为空则可以。)

要创建新元素,您可以XmlDocument.CreateElement但是,如果您要创建的大部分内容不是动态确定的,请创建一个字符串并进行解析,然后从该文档中导入以插入到另一个文档中:

$tempDoc = [xml]"<element><inner>data</inner></element>";
$newEl = $tempDoc.DocumentElement;

$newEl = $destDoc.ImportNode($newEl, $true); # $true => deep
$destDoc.DocumentElement.InsertAfter($newEl, $destDoc.DocumentElement.LastChild);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用递归将一个子字符串的所有出现替换为另一个子字符串

来自分类Dev

将元素位置附加到另一个具有动态高度WPF的位置

来自分类Dev

Python的ElementTree-查找带有包含某些文本的子元素的元素,然后将另一个子元素添加到列表中

来自分类Dev

将两个结果在一个子传递到另一个子

来自分类Dev

将多个子项附加到一个元素

来自分类Dev

如何使用Javascript将div附加到另一个div的右侧或左侧?

来自分类Dev

使用Powershell将新XML节点从一个文件附加或添加到另一个文件

来自分类Dev

将点击事件从一个子组件传递到另一个子组件

来自分类Dev

将列表的所有元素分别附加到python中另一个列表的所有元素

来自分类Dev

为什么我的子菜单与另一个子元素重叠?

来自分类Dev

将张量附加到另一个张量的每个元素

来自分类Dev

将pem附加到另一个

来自分类Dev

将一个xml元素添加到另一个xml中

来自分类Dev

使用递归将一个子字符串的所有出现替换为另一个子字符串

来自分类Dev

Python的ElementTree-查找带有包含某些文本的子元素的元素,然后将另一个子元素添加到列表中

来自分类Dev

如何将一个子域重写为另一个子域?

来自分类Dev

如何使用python将一个csv文件附加到另一个

来自分类Dev

试图将一个Polymer元素附加到另一个Polymer元素中

来自分类Dev

使用sed将文件附加到另一个文件

来自分类Dev

如何基于事件使用React将一个子react / html组件替换为另一个子组件?

来自分类Dev

oracle 11g PLSQL将xml文档作为子元素附加到另一个xml文档

来自分类Dev

将DatePicker附加到另一个UI元素

来自分类Dev

使用PHP将XML树作为子级附加到另一个XML

来自分类Dev

使用PowerShell将多个子版本号替换为另一个

来自分类Dev

使用 sed 或 awk 将值从一个文件附加到另一个文件

来自分类Dev

如何使用for循环将列表附加到另一个列表

来自分类Dev

使用 jQuery 复制 div 并附加到一组元素中的另一个元素

来自分类Dev

将列表的元素附加到迭代器的左侧或右侧到另一个列表

来自分类Dev

如何将现有的 html 元素附加到另一个元素?

Related 相关文章

  1. 1

    使用递归将一个子字符串的所有出现替换为另一个子字符串

  2. 2

    将元素位置附加到另一个具有动态高度WPF的位置

  3. 3

    Python的ElementTree-查找带有包含某些文本的子元素的元素,然后将另一个子元素添加到列表中

  4. 4

    将两个结果在一个子传递到另一个子

  5. 5

    将多个子项附加到一个元素

  6. 6

    如何使用Javascript将div附加到另一个div的右侧或左侧?

  7. 7

    使用Powershell将新XML节点从一个文件附加或添加到另一个文件

  8. 8

    将点击事件从一个子组件传递到另一个子组件

  9. 9

    将列表的所有元素分别附加到python中另一个列表的所有元素

  10. 10

    为什么我的子菜单与另一个子元素重叠?

  11. 11

    将张量附加到另一个张量的每个元素

  12. 12

    将pem附加到另一个

  13. 13

    将一个xml元素添加到另一个xml中

  14. 14

    使用递归将一个子字符串的所有出现替换为另一个子字符串

  15. 15

    Python的ElementTree-查找带有包含某些文本的子元素的元素,然后将另一个子元素添加到列表中

  16. 16

    如何将一个子域重写为另一个子域?

  17. 17

    如何使用python将一个csv文件附加到另一个

  18. 18

    试图将一个Polymer元素附加到另一个Polymer元素中

  19. 19

    使用sed将文件附加到另一个文件

  20. 20

    如何基于事件使用React将一个子react / html组件替换为另一个子组件?

  21. 21

    oracle 11g PLSQL将xml文档作为子元素附加到另一个xml文档

  22. 22

    将DatePicker附加到另一个UI元素

  23. 23

    使用PHP将XML树作为子级附加到另一个XML

  24. 24

    使用PowerShell将多个子版本号替换为另一个

  25. 25

    使用 sed 或 awk 将值从一个文件附加到另一个文件

  26. 26

    如何使用for循环将列表附加到另一个列表

  27. 27

    使用 jQuery 复制 div 并附加到一组元素中的另一个元素

  28. 28

    将列表的元素附加到迭代器的左侧或右侧到另一个列表

  29. 29

    如何将现有的 html 元素附加到另一个元素?

热门标签

归档