如何在 powershell 中的 .loadtest 文件上使用 XML - SelectNode
How to use XML - SelectNode on a .loadtest file in powershell
我正在尝试从 powershell
读取 .loadtest
文件(Visual Studio 加载测试文件 (.loadtest
))以尝试更改一个属性.loadtest
文件中的节点。
虽然该文件是一个 .loadtest
文件,但它基本上是一个 xml
文件
.loadtest文件是这样的:
<?xml version="1.0" encoding="utf-8"?>
<LoadTest Name="ABC" Description="" Owner="" storage="c:\users\....\ABC.loadtest" Priority="2147483647" Enabled="true" CssProjectStructure="" CssIteration="" DeploymentItemsEditable="" WorkItemIds="" TraceLevel="None" CurrentRunConfig="Run Settings1" Id="XXXX-XXXX....XXXX" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Scenarios>
<Scenario Name="ABC" DelayBetweenIterations="0" PercentNewUsers="100" IPSwitching="true" TestMixType="PercentageOfUsersRunning" ApplyDistributionToPacingDelay="true" MaxTestIterations="0" DisableDuringWarmup="false" DelayStartTime="0" AllowedAgents="">
<ThinkProfile Value="0.2" Pattern="NormalDistribution" />
<LoadProfile Pattern="Step" InitialUsers="10" MaxUsers="1000" StepUsers="10" StepDuration="10" StepRampTime="0" />
...
...
...
<RunConfigurations>
<RunConfiguration Name="Run Settings1" RunDuration="43200" SampleRate="15">
</RunConfiguration>
</RunConfigurations>
我正在使用代码:
$Content = [XML]( Get-Content -Path $Path)
$Node = $Content.SelectNodes("/LoadTest/Scenarios/Scenario/LoadProfile");
也试过$Content.SelectNodes("/LoadTest/RunConfigurations/RunConfiguration");
SelectNodes
适用于应用程序配置,xmls
但不适用于此类文件。如果我检查 $Content
,它会显示
[DBG]: PS C:\Users\a>> $Content
xml LoadTest
----- ------------
version="1.0" encoding="utf-8" LoadTest
所以这是一个有效的文件,但它不允许我使用 SelectNode
如果我执行以下操作,则没有任何输出:
[DBG]: PS C:\Users\a>> $Content.SelectNodes("/LoadTest");
其他详情:
PS 版本: 4
PS: 我检查了路径、内容、我的命令,一切看起来都不错。如果我只是用一个应用程序配置文件替换它,它工作得很好,但这个文件有问题。
所以经过大量试验后,它开始工作了:
$Nodes = $Content.SelectNodes("//*") | ? {$_.LocalName -eq "LoadProfile"}
这个有效而简单的 .SelectNode("/Loadtest")
或 .SelectNode("//")
无效的原因是由于某些原因,"Loadtest" 节点没有发生读取,因为 Loadtest 节点包含属性(如上述问题中所提供)。所以无论我如何尝试(甚至尝试将此 .loadtest 文件转换为 .xml 然后获取节点)它都没有用。我看到这个 select 个节点得到了所有并尝试过并且有效!
我正在尝试从 powershell
读取 .loadtest
文件(Visual Studio 加载测试文件 (.loadtest
))以尝试更改一个属性.loadtest
文件中的节点。
虽然该文件是一个 .loadtest
文件,但它基本上是一个 xml
文件
.loadtest文件是这样的:
<?xml version="1.0" encoding="utf-8"?>
<LoadTest Name="ABC" Description="" Owner="" storage="c:\users\....\ABC.loadtest" Priority="2147483647" Enabled="true" CssProjectStructure="" CssIteration="" DeploymentItemsEditable="" WorkItemIds="" TraceLevel="None" CurrentRunConfig="Run Settings1" Id="XXXX-XXXX....XXXX" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
<Scenarios>
<Scenario Name="ABC" DelayBetweenIterations="0" PercentNewUsers="100" IPSwitching="true" TestMixType="PercentageOfUsersRunning" ApplyDistributionToPacingDelay="true" MaxTestIterations="0" DisableDuringWarmup="false" DelayStartTime="0" AllowedAgents="">
<ThinkProfile Value="0.2" Pattern="NormalDistribution" />
<LoadProfile Pattern="Step" InitialUsers="10" MaxUsers="1000" StepUsers="10" StepDuration="10" StepRampTime="0" />
...
...
...
<RunConfigurations>
<RunConfiguration Name="Run Settings1" RunDuration="43200" SampleRate="15">
</RunConfiguration>
</RunConfigurations>
我正在使用代码:
$Content = [XML]( Get-Content -Path $Path)
$Node = $Content.SelectNodes("/LoadTest/Scenarios/Scenario/LoadProfile");
也试过$Content.SelectNodes("/LoadTest/RunConfigurations/RunConfiguration");
SelectNodes
适用于应用程序配置,xmls
但不适用于此类文件。如果我检查 $Content
,它会显示
[DBG]: PS C:\Users\a>> $Content
xml LoadTest
----- ------------
version="1.0" encoding="utf-8" LoadTest
所以这是一个有效的文件,但它不允许我使用 SelectNode 如果我执行以下操作,则没有任何输出:
[DBG]: PS C:\Users\a>> $Content.SelectNodes("/LoadTest");
其他详情:
PS 版本: 4
PS: 我检查了路径、内容、我的命令,一切看起来都不错。如果我只是用一个应用程序配置文件替换它,它工作得很好,但这个文件有问题。
所以经过大量试验后,它开始工作了:
$Nodes = $Content.SelectNodes("//*") | ? {$_.LocalName -eq "LoadProfile"}
这个有效而简单的 .SelectNode("/Loadtest")
或 .SelectNode("//")
无效的原因是由于某些原因,"Loadtest" 节点没有发生读取,因为 Loadtest 节点包含属性(如上述问题中所提供)。所以无论我如何尝试(甚至尝试将此 .loadtest 文件转换为 .xml 然后获取节点)它都没有用。我看到这个 select 个节点得到了所有并尝试过并且有效!