.net - 通过 PowerShell 删除 XML 中的子项?
问题描述
我已经搜索了所有地方以找到此问题的答案,但我似乎找不到适合我的答案,是的,我知道这已经被问了很多,但没有一个工作。
这是我的代码:
$Request = Invoke-RestMethod ($BaseURL + $StatPage) -WebSession $Session -Method Post -Body $StatBody
$Request = $Request | Where-Object {$_.'mac' -ne "00:00:00:00:00:00"}
我什至尝试过,而不是删除它只是打印出来的节点:
foreach($Node in $Request.'ajax-response'.response.'acl-list'.acl.deny)
{
if($Node.'mac' -eq "00:00:00:00:00:00")
{
$Node.ParentNode.RemoveNode($Node)
}
}
这产生了很好的旧错误:Collection was of a fixed size.
.
我尝试了其他一些但不再有代码,MAC 有效并且在列表中,并通过保存和检查验证了这一点。
这是一些示例XML
我需要使用 XML,因为 API 只支持它,我真的碰壁了,需要一些帮助:)
解决方案
出现错误Collection was of a fixed size.
表明您可能正在使用集合\数组而不是 XML 元素。
您可以将Invoke-RestMethod
输出显式转换为 XmlDocument:
[xml] $Request = Invoke-RestMethod ($BaseURL + $StatPage) -WebSession $Session -Method Post -Body $StatBody
RemoveChild()
并在要删除的节点上调用该方法:
foreach($Node in $Request.'ajax-response'.response.'acl-list'.acl.deny)
{
if($Node.'mac' -eq "00:00:00:00:00:00")
{
$Node.ParentNode.RemoveChild($Node)
}
}
如果您对给出的输出不感兴趣RemoveChild()
,可以将其通过管道传递给 null:
$Node.ParentNode.RemoveChild($Node) | Out-Null
推荐阅读
- angular - Angular 应用程序的性能测量?
- c# - Unity 中某些动画期间平滑过渡和碰撞的动画
- php - Oracle/Doctrine 从插入的函数中获取结果
- bash - 将目录中的文件转换为 dos2unix 格式的脚本
- ios - React Native iOS 发布白屏,TypeError: undefined is not an object (evalating 't.default')
- ocaml - OCaml 无法获取数组长度
- python-3.x - str.replace() 删除 python 数据框中的列
- python - VS Code:如何在 python 中查找变量的所有引用?
- android - 优化ScrollView中的动态复杂布局
- user-interface - FileDialog 使应用程序崩溃