xml - 如何在 PowerShell 中自动创建 XML 的新元素?
问题描述
我有一个包含以下内容的文本文件:
123asdf
abdfeef
22343sf
dfafdsf
该文件的内容正在发生变化。
我想创建一个 xml 文件,其中一个元素包含文本文件内容。
我试过了,但所有内容都在同一个元素中:
$Getfile = Get-Content .\DeleteFile.txt
$TimeStamp = [System.TimeZoneInfo]::ConvertTimeBySystemTimeZoneId(
(Get-Date), 'Taipei Standard Time')
$delete_file = @"
<?xml version="1.0" encoding="UTF-8"?>
<Handling>
<Deleted>
<1>$Getfile</1>
</Deleted>
<TimeStamp>$TimeStamp</TimeStamp>
</Handling>
"@
$delete_file | Out-File .\DeleteFile.xml
输出:
<?xml version="1.0" encoding="UTF-8"?>
<Handling>
<Deleted>
<1>123asdf abdfeef 22343sf dfafdsf</1>
</Deleted>
<TimeStamp>12/04/2019 17:49:06</TimeStamp>
</Handling>
我的期望是输出会是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<Handling>
<Deleted>
<1>123asdf</1>
<2>abdfeef</2>
<3>22343sf</3>
<4>dfafdsf</4>
</Deleted>
<TimeStamp>12/04/2019 17:49:06</TimeStamp>
</Handling>
任何人都可以帮助我吗?
解决方案
内容进入相同的元素,因为您没有创建新的 XML 元素。要添加元素,请创建一个 XML 对象并使用它的CreateElement
和AppendChild
方法。像这样,
# Skeleton document that is filled later
[xml]$d = @'
<Handling>
<Deleted />
<TimeStamp />
</Handling>
'@
# Dummy data, read these from a file instead
$data = @('123asdf', 'abdfeef', '22343sf', 'dfafdsf')
# XPath selects the node under which new elements are added
$n = $d.SelectSingleNode('/Handling/Deleted')
# Loop through input data
for($i=0; $i -lt $data.length; ++$i) {
# Create new element, Element name is from loop counter
$e = $d.CreateElement(($i+1).ToString())
$e.InnerText = $data[$i]
# Add the new node into document
$n.AppendChild($e) | out-null
}
# Display the results.
$d.save([console]::out)
输出:
<?xml version="1.0" encoding="ibm850"?>
<Handling>
<Deleted>
<1>123asdf</1>
<2>abdfeef</2>
<3>22343sf</3>
<4>dfafdsf</4>
</Deleted>
<TimeStamp />
</Handling>
推荐阅读
- java - 如何将 JTable 列向右对齐,但在左侧将其切断?
- vue.js - Nuxt 组件变量未更新
- regex - 正则表达式获取包含某些字符但不包含其他字符的单词
- android - 下载的图片没有显示在手机的图库中,颤抖
- python - 未找到符号:_TA-ACOS - TA-Lib 的 Python 包装器未导入
- python - 如何在 Python 中使用相互引用的模块编写包?
- excel - 使用 VBA 自动过滤不同的单元格颜色
- amazon-web-services - 如何使用 AWS 开发工具包 (Javascript) 登录 AWS Cognito 用户池?
- plotnine - 如何按多个变量重新排序图?
- c# - Deleting large volumes of data from database using .NetCore