从XML中获取具有特定名称的所有节点的值

斯凯勒德

我在以最有效的方式从XML获取具有特定名称的节点的所有值时遇到问题。

例如:

<h1>
<MyNode>Node One</MyNode>
<h2>
    <MyNode>Note Two</MyNode>
    <DiffrentNode>I dont want that</DiffrentNode>
    <h3>
        <MyNode>Node Three</MyNode>
    </h3>
</h2>
<HHH1>
    <MyNode>Node Four</MyNode>
</HHH1>
</h1>
<g2>
    <MyNode>Node Five</MyNode>
</g2>

我想从XML获得这些值:

  • 节点一
  • 节点二
  • 节点三
  • 节点四
  • 节点五

我希望能够用这样的代码做同样的事情:

<h1>
<h2 MyArgument = "Argument One" Stuff = "I dont want that">
    <DiffrentNode>Something I dont want</DiffrentNode>
    <h3 MyArgument = "Argument Two" Stuff = "I dont want that too">
    </h3>
</h2>
<HHH1>
    <DiffrentNode>Something I dont want</DiffrentNode>
</HHH1>
</h1>
<g2 MyArgument = "Argument Three">
    <DiffrentNode>Something I dont want</DiffrentNode>
</g2>

并获得:

  • 论据一
  • 论据二
  • 论据三

有任何想法吗?到目前为止,我尝试做:

$xdoc = New-Object System.Xml.XmlDocument
$file = Resolve-Path("C:\CompiledDynoview.xml")
$xdoc.load($file)
[xml] $xdoc = Get-Content $file
$xdoc.h1.MyNode
$xdoc.h1.h2.MyNode
$xdoc.h1.h3.MyNode
...

但这似乎不是最好的方法。应该有更好的东西。

安斯加·威彻斯(Ansgar Wiechers)

您在这里尝试做不同的事情,因此您将无法对两个操作使用完全相同的代码。

在第一个示例中,您要选择名称为的所有节点的值MyNode选择带有XPath表达式 的节点//MyNode并展开其#text属性。有多种方法可以执行此操作,例如Select-Xml,使用@PetSerAl建议:

Select-Xml -XPath '//MyNode' -Path 'C:\path\to\first.xml' |
  Select-Object -Expand Node |
  Select-Object -Expand '#text'

或通过将文件作为XmlDocument对象导入并使用其SelectNodes()方法:

[xml]$xml = Get-Content 'C:\path\to\first.xml'
$xml.SelectNodes('//MyNode') | Select-Object -Expand '#text'

在第二个示例中,您MyArgument要从具有该特定属性的所有节点中选择属性的值使用XPath表达式//@MyArgument选择所有属性MyArgument,然后像以前一样扩展它们的值,如下所示:

Select-Xml -XPath '//@MyArgument' -Path 'C:\path\to\second.xml' |
  Select-Object -Expand Node |
  Select-Object -Expand '#text'

或像这样:

[xml]$xml = Get-Content 'C:\path\to\second.xml'
$xml.SelectNodes('//@MyArgument') | Select-Object -Expand '#text'

边注:

$xml = New-Object System.Xml.XmlDocument
$xml.load('C:\path\to\your.xml')

[xml]$xml = Get-Content 'C:\path\to\your.xml'

做同样的事情,所以不要使用两者之一。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以从PHP数组中获取具有特定名称的所有节点?

来自分类Dev

如何获得具有特定名称的所有节点

来自分类Dev

尝试从XML中删除节点(如果该节点包含具有特定名称的子节点,但出现错误)

来自分类Dev

XSLT 处理所有节点,直到到达具有特定名称的节点

来自分类Dev

获取具有特定名称的 cookie

来自分类Dev

XPath选择Java中具有指定名称的文档中的所有节点

来自分类Dev

查询SharePoint搜索以从具有特定名称的创建者为A或B的列表中获取所有任务

来自分类Dev

如何获取具有特定名称的magento产品的所有图库图像?

来自分类Dev

如何获取具有特定名称的所有主键?

来自分类Dev

使用 XSLT 提取具有特定名称的所有 XML 标记

来自分类Dev

重命名所有具有特定名称的文件

来自分类Dev

如何从/删除具有特定名称的所有文件?

来自分类Dev

遍历所有具有特定名称的组合框

来自分类Dev

如何删除所有具有特定名称的文件?

来自分类Dev

如何中止具有特定名称的所有作业?

来自分类Dev

使用C#在XML中选择具有特定名称的子节点

来自分类Dev

删除具有给定名称的所有XML属性

来自分类Dev

访问R中的嵌套列表中具有特定名称的所有列

来自分类Dev

在深度嵌套的JSON中查找具有特定名称的所有键

来自分类Dev

在python中查找具有特定名称的所有JSON密钥

来自分类Dev

Bash SSH是否更改具有特定名称的所有文件中的CHMOD?

来自分类Dev

重命名文件夹中具有特定名称的所有具有特定格式的文件

来自分类Dev

获取Groovy中XML节点的所有子节点的值

来自分类Dev

如何使用JMESPATH和javascript获取具有特定名称值的最后3个元素?

来自分类Dev

如何使用wget获取具有特定名称的文件?

来自分类Dev

更改具有特定名称属性的元素的值属性

来自分类Dev

在Java中获取具有名称空间的XML节点

来自分类Dev

如何从所有子目录中递归删除所有具有特定名称的文件夹?

来自分类Dev

创建具有特定父节点值及其 XML 的所有子节点值的 Map

Related 相关文章

  1. 1

    是否可以从PHP数组中获取具有特定名称的所有节点?

  2. 2

    如何获得具有特定名称的所有节点

  3. 3

    尝试从XML中删除节点(如果该节点包含具有特定名称的子节点,但出现错误)

  4. 4

    XSLT 处理所有节点,直到到达具有特定名称的节点

  5. 5

    获取具有特定名称的 cookie

  6. 6

    XPath选择Java中具有指定名称的文档中的所有节点

  7. 7

    查询SharePoint搜索以从具有特定名称的创建者为A或B的列表中获取所有任务

  8. 8

    如何获取具有特定名称的magento产品的所有图库图像?

  9. 9

    如何获取具有特定名称的所有主键?

  10. 10

    使用 XSLT 提取具有特定名称的所有 XML 标记

  11. 11

    重命名所有具有特定名称的文件

  12. 12

    如何从/删除具有特定名称的所有文件?

  13. 13

    遍历所有具有特定名称的组合框

  14. 14

    如何删除所有具有特定名称的文件?

  15. 15

    如何中止具有特定名称的所有作业?

  16. 16

    使用C#在XML中选择具有特定名称的子节点

  17. 17

    删除具有给定名称的所有XML属性

  18. 18

    访问R中的嵌套列表中具有特定名称的所有列

  19. 19

    在深度嵌套的JSON中查找具有特定名称的所有键

  20. 20

    在python中查找具有特定名称的所有JSON密钥

  21. 21

    Bash SSH是否更改具有特定名称的所有文件中的CHMOD?

  22. 22

    重命名文件夹中具有特定名称的所有具有特定格式的文件

  23. 23

    获取Groovy中XML节点的所有子节点的值

  24. 24

    如何使用JMESPATH和javascript获取具有特定名称值的最后3个元素?

  25. 25

    如何使用wget获取具有特定名称的文件?

  26. 26

    更改具有特定名称属性的元素的值属性

  27. 27

    在Java中获取具有名称空间的XML节点

  28. 28

    如何从所有子目录中递归删除所有具有特定名称的文件夹?

  29. 29

    创建具有特定父节点值及其 XML 的所有子节点值的 Map

热门标签

归档