gpt4 book ai didi

xml - 使用和不使用节点属性访问 innerXML

转载 作者:数据小太阳 更新时间:2023-10-29 03:00:15 26 4
gpt4 key购买 nike

给定这两个节点变化

<Path>C:\OneA.txt</Path>

<Path force="True">C:\OneB.txt</Path>

和一个包含父节点和子节点的变量,我在寻找获取内部文本的单一解决方案时遇到了问题。

在第一个条件中,$variable.path 返回内部文本 C:\OneA.txt

但在第二种情况下这不起作用,它返回一个 [System.Xml.XmlElement]。我可以使用 $variable.path.force 并返回 true,但我需要使用 $variable.path.'#text'$variable.path.InnerXml 来返回 C:\OneB.txt

但是,如果我在第一种情况下使用这些技术中的任何一种,它根本不会返回任何内容。有没有一种方法可以在两种情况下都起作用,或者是我查看节点是否具有属性的唯一选择,如果有,则使用一种方法,如果没有,则使用另一种方法?我曾希望不需要将它分配给一个新变量,但没有一种方法可以满足两种条件,从而成为最小条件的路径。

最佳答案

在仅包含文本节点(无属性、无嵌套节点)的节点上使用点访问时,PowerShell 会自动扩展该文本节点的值。但是,在您的第二个示例中,节点也有一个属性,因此不会发生自动扩展。

我建议避免使用点访问,而是使用 SelectSingleNode()方法 XPath expression ,这样你总能得到一个节点对象:

$xml.SelectSingleNode('//Path').'#text'

但是请注意,XPath 表达式区分大小写,因此表达式 //path不匹配节点 <Path> .

关于xml - 使用和不使用节点属性访问 innerXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48531074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com