【问题标题】:Obtain the value of one XML attribute using a different attribute as a key in Powershell使用不同的属性作为 Powershell 中的键获取一个 XML 属性的值
【发布时间】:2020-04-07 19:40:28
【问题描述】:

我真的迷失了做一些简单的事情。我需要扫描几千个文件以查找每个文件中的几个特定项目。使用下面的 xml 文件,我试图获取属性“值”的内容,用于特定的“属性”名称。例如,我只想获取属性名称“MY_KEY_DATA1”的值。我可以选择基于以下代码的节点,但我需要获取属性名称“MY_KEY_DATA1”的值“314159”。在下面的代码中,我可以获取节点并将其打印出来,但是如何读取特定属性?我知道我这样做很困难,必须有一个更简单的方法。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mydevice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" dosid="02073" id="" name="MyTargetName">
<manager name="Module 1">
</manager>
<manager name="Module 2">
</manager>
<misc  name="Misc Name">
</misc>
<manager name="Module ABC">
</manager>
<modules>
<module group="Group1" name="name1">
</module>
<module group="Group2" name="name2">
</module>
<module group="Memory" name="myname">
<misc_data name= "MISC_DATA"  value = "42"/>
<property name="MY_KEY_DATA1" value="314159"/>
<property name="USELESS_DATA1" value="2"/>
<property name="MY_KEY_DATA1" value="2718"/>
</module>
</modules>
</mydevice>

--

$Testfile = 'xmltest2.xml'
$xml = [xml](Get-Content $Testfile)


$myNode2 =  $xml.SelectSingleNode("//modules/module[@group='Memory']")
Write-Output $myNode
Foreach ($xmlProperty in $myNode)  {

}

【问题讨论】:

  • 你可以使用$xml.SelectNodes("//modules/module[@group='Memory']/property[@name='MY_KEY_DATA1']").value
  • 请允许我给你一个标准的建议给新手:如果一个答案解决了你的问题,请accept it点击它旁边的大复选标记(✓),也可以选择投票(投票至少需要 15 个声望点)。如果您发现其他答案有帮助,请给他们投票。接受(您将获得 2 个声望点)和投票可以帮助未来的读者。如果您的问题尚未得到完全解答,请提供反馈或self-answer

标签: xml powershell attributes selectsinglenode


【解决方案1】:

一旦你有了XmlDocument 类型,你就可以选择目标节点,然后直接访问它的属性。您可以使用SelectNodes(可能有多个节点)或SelectSingleNode(如果需要一个节点)。 XPATH 值将缩小到包含目标属性值的特定节点。然后您可以使用成员访问运算符. 简单地访问属性值。

$Testfile = 'xmltest2.xml'
$xml = [xml](Get-Content $Testfile)
$xml.SelectNodes("//modules/module[@group='Memory']/property[@name='MY_KEY_DATA1']").value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    相关资源
    最近更新 更多