作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过PowerShell将一些制表符分隔的CSV文件转换为XML,但我想尽一切办法。我100%肯定这是我所缺少的真正简单的东西,因此将不胜感激。我非常接近,但无法克服最后的障碍。
我本质上是希望此脚本遍历它所指向的制表符分隔的CSV($path
),从CSV中删除每一行并将数据放入XML工作表($xmlpath
)。
CSV范例:
"Name" "Item" "Purchase Price""Jimmy Smits" "Egg" "£40""Edward Price" "KumQuat" "£6000""Timmy Mallet" "Bug" "£2""Edgar Allen Poe" "Weird" "0""2Pac Shakur" "Eggnog" ""
XML output template example:
<registration>
<Individual>
<Name></Name>
<Item></Item>
<Purchase Price></Purchase Price>
</Individual>
</registration>
$data = Import-Csv -Path $path -Delimiter "`t"
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
$entryTemplate = @'
<individual>
<Name>$($xmlnames.Name)</Name>
<Item>$($xmlitems.Item)</Item>
<Purchase Price>$($xmlprice."Purchase Price")</Purchase Price>
</individual>
'@
$xml = $data | ForEach-Object {
$ExecutionContext.InvokeCommand.ExpandString($entrytemplate)
}
$xml | Out-File $xmlpath
<Individual>
<Name>Jimmy Smits Edward Price Timmy Mallet Edgar Allen Poe 2Pac Shakur</Name>
<Item>System.Object IList.Item(int index) {get;set;}</Item>
<Purchase Price>£40 £6000 £2 0 </Purchase Price>
</Individual>
$data | Select-Object 'thing'
是给我所有“事物”的列表,而不是遍历每个“事物”并在每个XML条目中列出一个。但是给我正确的条目数吗? 最佳答案
三个陈述
$xmlnames = $data | Select-Object "Name"
$xmlitems = $data | Select-Object "Item"
$xmlprice = $data | Select-Object "Purchase Price"
$xmlitems
,您也会遇到PowerShell陷阱,因为变量
$xmlnames
,
$xmlitems
和
$xmlprice
是数组。在数组上使用点访问时,PowerShell正在执行称为
member enumeration的操作。本质上,
$xmlnames.Name
不会为您提供数组对象的
Name
属性值,而是所有数组元素的
Name
属性值。
$xmlitems
。对于该变量,您尝试获取数组元素的属性
Item
的值。但是,数组对象实际上具有方法
Item()
,因此
$xmlitems.Item
尝试调用该方法,而不是调用数组元素的
Item
属性。但是,由于该方法已重载并且调用缺少括号(
$xmlitems.Item
而不是
$xmlitems.Item()
),因此PowerShell会向您显示方法定义。
Select-Object
语句,并用
"current object" variable
$_
替换XML片段模板中的数组变量,该代码将完成您想要的操作。
$entryTemplate = @'
<individual>
<Name>$($_.Name)</Name>
<Item>$($_.Item)</Item>
<Purchase Price>$($_."Purchase Price")</Purchase Price>
</individual>
'@
关于xml - 将CSV文件转换为适当的XML格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55383413/
这段代码在 Java 中的等价物是什么?我放了一部分,我对 I/O 部分感兴趣: int fd = open(FILE_NAME, O_WRONLY); int ret = 0; if (fd =
我正在尝试将维度为 d1,d2,d3 的张量 M[a1,a2,a3] reshape 为维度为 d2, d1*d3 的矩阵 M[a2,a1*a3]。我试过 M.reshape(d2,d1*d3) 但是
我是一名优秀的程序员,十分优秀!