使用XPath是否可以重建节点的原始XML文本?
使用SelectSingleNode在变量中提供此XML
<Rule scope="node" note="Location">
<Property>location</Property>
<Operator>-eq</Operator>
<Value>Px</Value>
</Rule>
例如,我可以使用$variable.scope
和$variable.property
来获取属性和子节点的值。但是,当我验证XML(例如,范围的有效值)时,我想提供一个错误日志,显示与文件中的XML完全相同的XML。所以,这完全是一个字符串
<Rule scope="badNode" note="Location">
我可以重建它,但是由于属性可以是任意顺序,因此我可能无法像实际找到的那样重建它。因此,我希望有一些机制可以获取原始字符串,而无需分别将XML文件重新解析为字符串并进行搜索
答案 0 :(得分:0)
您可以获取OuterXml
字符串表示形式,并仅删除第一个>
之后的所有内容:
$validScopes = 'node','superNode'
$RuleNodes = $xml.SelectNodes('//Rule')
foreach($node in $RuleNodes){
if($node.GetAttribute('scope') -notin $validScopes){
$faultyNode = $node.OuterXml -replace '\>.*$','>'
Write-Error "Faulty node found: $faultyNode"
}
}