xml – 如何在PowerShell中使用带有命名空间的xpath访问元素?

前端之家收集整理的这篇文章主要介绍了xml – 如何在PowerShell中使用带有命名空间的xpath访问元素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
电源外壳:
  1. $doc = new-object System.Xml.XmlDocument
  2. $doc.Load($filename)
  3.  
  4. $items = Select-Xml -Xml $doc -XPath '//item'
  5. $items | foreach {
  6. $item = $_
  7. write-host $item.name
  8. }

我没有输出

XML:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <submission version="2.0" type="TREE" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:noNamespaceSchemaLocation="TREE.xsd" xmlns="some/kind/of/tree/v1">
  3. <group>
  4. <item></item>
  5. <item></item>
  6. <item></item>
  7. </group>
  8. <submission>
你有一些问题在继续.首先,您需要在XPath模式中指定命名空间,XML格式不正确(结束标记不是结束标记),而Select-Xml直接返回XmlInfo而不是XmlElement.试试这个:
  1. $xml = [xml]@'
  2. <submission version="2.0" type="TREE" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:noNamespaceSchemaLocation="TREE.xsd" xmlns="some/kind/of/tree/v1">
  3. <group>
  4. <item></item>
  5. <item></item>
  6. <item></item>
  7. </group>
  8. </submission>
  9. '@
  10.  
  11. $ns = @{dns="some/kind/of/tree/v1"}
  12. $items = Select-Xml -Xml $xml -XPath '//dns:item' -Namespace $ns
  13. $items | Foreach {$_.Node.Name}

猜你在找的XML相关文章