尝试将数据从XML移动到Excel电子表格

尝试将数据从XML移动到Excel电子表格,xml,excel,powershell,powershell-2.0,Xml,Excel,Powershell,Powershell 2.0,我正在尝试学习如何使用PowerShell加速工作中的某些任务 我的目标是获取一个XML文档,其中列出了有关产品的一些数据,并从某个重复出现的子节点获取数据,然后将其放入Excel中的新行 因此XML可能看起来像这样(包括“sequence”属性): 您需要访问xml中的track-属性,以实际获取track元素的数组轨迹是单个节点,而它包含多个轨迹-元素(可以作为数组访问) 您没有在循环中使用当前项$track $books.tracks对包含的示例无效。您缺少xml根元素 试试这个: $

我正在尝试学习如何使用PowerShell加速工作中的某些任务

我的目标是获取一个XML文档,其中列出了有关产品的一些数据,并从某个重复出现的子节点获取数据,然后将其放入Excel中的新行

因此XML可能看起来像这样(包括“sequence”属性):

  • 您需要访问xml中的
    track
    -属性,以实际获取track元素的数组<代码>轨迹是单个节点,而它包含多个
    轨迹
    -元素(可以作为数组访问)
  • 您没有在循环中使用当前项
    $track
  • $books.tracks
    对包含的示例无效。您缺少
    xml
    根元素
试试这个:

$row = 5
foreach ($track in $books.xml.tracks.track) {
    $title = $track.tracktitle
    $excelworksheet.cells.item($row, 2) = $title
    $row++
}

非常感谢您提供的信息!我有一个问题-我正在使用的xml文件实际上没有
元素,它仍然是必需的吗?我只是将它放在示例xml设置中,但忘记在我的问题中添加它。另外,在您的示例中,系统如何知道$track指向.track节点?您是否也可以将第3行写成
$blue=$blue.tracktitle
?或者名称实际上必须与xml节点匹配吗?如果它不在真实文件中,则不需要访问
xml
,但我必须使用它,因为xml树是在循环开始时以这种方式在示例输入中构建的,
$track
是当前的
track
-项,但是我用tracktitle替换了
$track
的值。现在将其更改为
$title
,以澄清问题(sry,我的答案基本上是你的复制粘贴,所以我没有注意到它)。:-)xml文件和变量名之间没有关系。变量可以被命名为任何你想要的。啊,好的,酷。是的,我看到的很多教程/示例都有与它们想要解决的任何问题相匹配的变量。当然,这对于整洁和可读性来说是有意义的,但对于像我这样的书呆子来说,我认为这是必需的,这让我很反感。顺便说一句,你的回答完全符合我的要求!我真是太感谢你了!
$row = 5
foreach ($track in $books.tracks) {
  $track = $books.tracks.track.tracktitle
  $excelworksheet.cells.item($row, 2) = $track
  $row++
}
$row = 5
foreach ($track in $books.xml.tracks.track) {
    $title = $track.tracktitle
    $excelworksheet.cells.item($row, 2) = $title
    $row++
}