我已经使这个示例XML循环,我有兴趣输出每个项目的产品名称。
<example>
<item>
<productname>Hoover</productname>
</item>
<item>
<productname>TV</productname>
</item>
<item>
<productname>Microwave</productname>
</item>
<item>
<productname>Computer</productname>
</item>
</example>
在我的PowerShell中,我可以轻松遍历每个项目,但我无法选择“productname”的内容,我不确定为什么。这是我的示例powershell代码:
[xml] $xml = Get-Content "./xmlexample.xml"
foreach ($item in $xml.example) {
Write-Host($item.InnerXML) #Outputs all XML as expected
Write-Host($item.InnerText) #Outputs the text of all child elements as expected
Write-Host($item.productname.InnerText) #Does not output anything
Write-Host($item.productname.InnerXML) #Does not output anything
}
任何帮助或建议,为什么这不起作用将不胜感激。它的行为就像一个没有更多孩子的儿童元素,不会以同样的方式对待。
答案 0 :(得分:2)
迭代$xml.example.ChildNodes
,然后文字只是$item.productname
:
PS C:\users\IEUser\Documents> foreach ($item in $xml.example.ChildNodes) {
>>> Write-Host($item.productname)
>>> }
Hoover
TV
Microwave
Computer
或者,如果您只想要包含item
的{{1}}元素,则可以迭代productname
个节点:
item
或者直接提取字符串数组:
PS C:\users\IEUser\Documents> foreach ($item in $xml.example.item) {
>>> Write-Host($item.productname)
>>> }
Hoover
TV
Microwave
Computer
答案 1 :(得分:1)
Powershell xml将xml文档的叶子映射为属性。此外,类似于Linq-to-XML,每个查询可能返回一个元素数组。 所以你可以像这样写你的循环:
firebase.auth().onAuthStateChanged
结果:
<Root/>
'productname'的作用类似于可以设置或检索的字符串属性。因此它没有其他xml方法或属性。