xml - 如何正确删除只有两个 XML 属性?
问题描述
我试图<Row></Row>
从我的 XML 文件中只删除前两个属性。但是,使用以下代码,它会从所有属性中删除所有这些<Worksheet></Worksheet>
属性。我究竟做错了什么?
我可以很好地获取元素 - 我在整个脚本中都这样做,但是删除一些元素对我来说似乎是一个问题。
$names = $XML.Workbook.Worksheet | Select Name
$environments = $XML.Workbook.Worksheet.Table.Row.Cell.Data
foreach ($node in $names) {
foreach ($name in $names) {
if ($node.Name -match $name.'#text') {
$delete = $XML.Workbook.Worksheet.Table.Row | Select -First 2 | % { $_.ParentNode.RemoveChild($_) }
#$delete | ForEach-Object { $_.ParentNode.RemoveChild($_) }
}
}
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="some name">
<Table ss:ExpandedColumnCount="9" ss:ExpandedRowCount="30" x:FullColumns="1"
x:FullRows="1" ss:DefaultRowHeight="15">
<Column ss:Width="274.5"/>
<Column ss:AutoFitWidth="0" ss:Width="57"/>
<Column ss:AutoFitWidth="0" ss:Width="96"/>
<Column ss:Width="53.25"/>
<Column ss:Index="6" ss:Width="274.5"/>
<Column ss:AutoFitWidth="0" ss:Width="96"/>
<Column ss:AutoFitWidth="0" ss:Width="54.75"/>
<Column ss:AutoFitWidth="0" ss:Width="52.5"/>
<Row>
<Cell><Data ss:Type="String">xx</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">xx</Data></Cell>
<Cell><Data ss:Type="String">xx</Data></Cell>
<Cell><Data ss:Type="String">xx</Data></Cell>
<Cell><Data ss:Type="String">xx</Data></Cell>
<Cell ss:Index="6"><Data ss:Type="String">xx</Data></Cell>
<Cell><Data ss:Type="String">xx</Data></Cell>
<Cell><Data ss:Type="String">xx</Data></Cell>
<Cell><Data ss:Type="String">xx</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">xx</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="Boolean">0</Data></Cell>
<Cell><Data ss:Type="Boolean">1</Data></Cell>
<Cell><Data ss:Type="Boolean">1</Data></Cell>
<Cell ss:Index="6"><Data ss:Type="String">xx</Data></Cell>
<Cell ss:StyleID="s16"><Data ss:Type="Boolean">0</Data></Cell>
<Cell><Data ss:Type="Boolean">1</Data></Cell>
<Cell><Data ss:Type="Boolean">1</Data></Cell>
</Row>
预期的输出应该是每个工作表,删除前两个<Row>
标签。
当前的输出是它删除了每个<Row>
标签。
解决方案
推荐阅读
- transpose - 在查询中转置数据
- python - Django 不发送带有附加 zip 文件的电子邮件
- javascript - 如何将函数内数组的值推送到空的全局数组
- css - scss - 设置父级似乎不起作用
- javascript - 我想选择一个没有父元素的子元素选择
- sql - 如何在SQL中从一个表中选择所有内容并从另一个表中选择一行
- r - R:将组中的所有字符串组合成一行
- python - 如何使这个循环重复直到添加了正确的值,Python
- python - 如何防止在python中输入十多个数字以及字母和符号
- .net - Net5 通配符包引用在锁定模式下导致“NU1004:包锁定文件不一致”错误