在缩小对特定XML值的搜索范围的同时,是否可以定义两个“ SelectSingleNode”语句?
我的XML结构如下:
<beans>
<bean id="MenuGet">
<property name="name">
<property name="MapOverride">
<map>
<entry key="node.infoblock" value="k4jk2jb54B$T45bt2j5ktb3B%$">
</map>
</property>
</bean>
</beans>
<beans>
<bean id="SystemGet">
<property name="name">
<property name="MapOverride">
<map>
<entry key="node.infoblock" value="b34t34bhj54b%B#Y$%Bn45ht5h">
</map>
</property>
</bean>
</beans>
下面是我用来调用要从第一个“ beans”标签中提取的值的语句,但我不确定它是否正确或是否可行:
$ statement = $ XMLFile.beans.bean.SelectSingleNode(“ id [contains(@ key =” Menu“)]”)。property [1] .map.SelectSingleNode(“ entry [@ key ='node.infoblock']” )。值
该文件中有两个键为“ node.infoblock”的条目。如果您希望每个bean一个条目,则不应使用SelectSingleNode。通过使用SelectNodes获得它们更有意义。
其次,您发布的Xml文件存在格式问题(没有根节点和许多未关闭的标签),因此无法解析。它看起来应该像这样:
<beans>
<bean id="MenuGet">
<property name="name" />
<property name="MapOverride">
<map>
<entry key="node.infoblock" value="k4jk2jb54B$T45bt2j5ktb3B%$" />
</map>
</property>
</bean>
<bean id="SystemGet">
<property name="name" />
<property name="MapOverride">
<map>
<entry key="node.infoblock" value="b34t34bhj54b%B#Y$%Bn45ht5h" />
</map>
</property>
</bean>
</beans>
如果保存该文件,则可以运行以下代码来检索条目:
$xmlFilePath = "c:\temp\file.xml"
$doc = new-object System.Xml.XmlDocument
$doc.load($xmlFilePath)
$entries = $doc.SelectNodes("//entry[@key='node.infoblock'][1]")
foreach($entry in $entries)
{
Write-Host $entry.value
}
它打印:
k4jk2jb54B $ T45bt2j5ktb3B%$
b34t34bhj54b%B#Y $%Bn45ht5h
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句