XmlElement .HasChildElement

问题描述 投票:0回答:1

给定 XML

<Element>Text</Element>

<Element>
    <Child>Text</Child>
</Element>

是否有一种简单的方法来区分具有子元素和仅文本(即子节点)的元素?

$xmlElement.HasChildNodes
将为两者返回
True
。我可以用
$xmlElement.ChildNodes.Where({($_.NodeType -eq 'Element')})
玩游戏,但这一点也不优雅。我真正想要的是
$xmlElement.HasChildElements
但这似乎不是一个选择,并且尝试在 PowerShell 中扩展
[Xml.XmlElement]
是相当痛苦的。我觉得唯一的选择是循环遍历所有子节点并在该集合上查找
.NodeType -eq 'Element'
和计数 0。但这感觉像是一件非常常见的事情,因此有一种简单的方法可以做到。

xml powershell
1个回答
0
投票

尝试使用xpath;像这样的东西:

$nodes = $xml.SelectNodes("//Element[descendant::*]");

foreach($node in $nodes) {
    echo $node.OuterXml
    }

输出应该只有:

<Element><Child>Text2</Child></Element>
© www.soinside.com 2019 - 2024. All rights reserved.