【问题标题】:Trying to parse XML file with <p> tags尝试使用 <p> 标签解析 XML 文件
【发布时间】:2017-11-16 17:09:17
【问题描述】:

我一直在尝试使用 PowerShell 解析 XML 文件的内容,并且已经取得了一些不错的进展,但是我遇到了一些我无法找到答案的问题。我希望有人能指出我正确的方向或帮助我了解如何获取包含在某些 P 标记中的 XML 中某些内容的值。这是我的 XML 文件的示例;

<?xml version="1.0"?>
<HVD version="2.0">
<Environment>
    <p name="Version">10</p>
    <p name="ID">258</p>
</Environment>
</HVD>

我可以通过使用以下内容来显示&lt;Environment&gt; 中的名称标签,但我无法弄清楚如何从&lt;p&gt; 标签本身获取值;

[xml]$xml = Get-Content myFile.xml;
$xml.HVD.Environment;

任何人都可以在这里帮助初学者吗?

【问题讨论】:

    标签: xml powershell


    【解决方案1】:

    试试这个:

    [xml]$xml = get-content myfile.xml
    $Version=($xml.HVD.Environment.P | where Name -eq 'version')."#text"
    $ID=($xml.HVD.Environment.P | where Name -eq 'ID')."#text"
    

    或者这个

    $Version=$xml.HVD.Environment.P[0]."#text";
    $ID=$xml.HVD.Environment.P[1]."#text";
    

    【讨论】:

    • 替代品总是好的。非常感谢 Esperento57 - 谢谢!
    【解决方案2】:

    标签(10 和 258)之间的文本是 p 标签的内部文本。因此,您需要获取 Environment 标签的第一个/第二个元素并读取它的 innerText。

    【讨论】:

    • 谢谢,我尝试使用 InnerText,但我不知道如何指定从哪个标签获取值。这个命令只是将它们全部返回; $xml.HVD.Environment.innertext;有没有办法指定我想要哪个值?
    • 你还需要像这样选择哪个p标签:$xml.HVD.Environment.p[0].innerText
    • 嘿,太棒了,它起作用了(但你知道)......非常感谢@Cyphrags!现在我可以在我的项目上取得一些真正的进展。
    • 很高兴能帮上忙,编码愉快! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多