在 Powershell 中解析 html 实体

Jir*_*Jir 3 html xml powershell tfs

我正在通过 Powershell 使用 Microsoft Team Foundation Server。我想要做的任务是为“测试用例”类型的给定工作项获取和设置“步骤”。

出于某种我不知道的原因,TFS 将诸如HTML 之类的信息存储在 XML 中,其中 HTML 元素是使用HTML 实体编写的,以免与 XML 混淆。

下面是一个例子:

<steps id="0" last="3">
    <step id="2" type="ValidateStep">
        <parameterizedString isformatted="true">
            &lt;DIV&gt;&lt;P&gt;I do this and that&lt;/P&gt;&lt;/DIV&gt;
        </parameterizedString>
        <parameterizedString isformatted="true">
            &lt;DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
        </parameterizedString>
        <description/>
    </step>
    <step id="3" type="ActionStep">
        <parameterizedString isformatted="true">
            &lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;I do something else &lt;BR/&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;
        </parameterizedString>
        <parameterizedString isformatted="true">
            &lt;DIV&gt;&lt;P&gt;This happens &lt;BR/&gt;&lt;/P&gt;&lt;/DIV&gt;
        </parameterizedString>
        <description/>
    </step>
</steps>
Run Code Online (Sandbox Code Playgroud)

显示为: TFS 如何呈现测试用例的步骤的屏幕截图

如何获得每个项目的“裸文本”?例如,This happens出于&lt;DIV&gt;&lt;P&gt;This happens &lt;BR/&gt;&lt;/P&gt;&lt;/DIV&gt;. 我必须编写自己的解析器还是已经有一些可以使用的东西?

x0n*_*x0n 5

System.Web命名空间中有一些东西可以帮助你:

PS> add-type -AssemblyName system.web
PS> [System.Web.HttpUtility]::HtmlDecode("Baskin &amp; Robbins")
Baskin & Robbins
Run Code Online (Sandbox Code Playgroud)

更新

我再次阅读了您的问题,您想要的不止这些。如果您不熟悉 xml 和 html 语义,这会有点棘手,所以这里有一个我为您拼凑的脚本。我希望你可以根据自己的需要修改它。

PS> add-type -AssemblyName system.web
PS> [System.Web.HttpUtility]::HtmlDecode("Baskin &amp; Robbins")
Baskin & Robbins
Run Code Online (Sandbox Code Playgroud)