![如何使用 xml starlet 选择 xml 值](https://linux22.com/image/1496577/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20xml%20starlet%20%E9%80%89%E6%8B%A9%20xml%20%E5%80%BC.png)
如何使用 xmlstarlet 检索值?
我正在尝试从以下 xml 文件中检索初始值 4.7:
<?xml version="1.0"?>
<GCContextualMethod xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.agilent.com/schemas/Analytical/Instrument/GC7890/2006/">
<method xmlns="">
<GC PostRunHoldTime="0" AutoPrepRun="UNKNOWN">
<Inlet DeterminesReadiness="true">
...
</Inlet>
<Inlet DeterminesReadiness="true" />
<Column DeterminesReadiness="true">
...
</Column>
<Column DeterminesReadiness="true">
<Setpoints Mode="CONSTANT_FLOW">
<Flow State="ON" InitialHoldTime="0" InitialValue="4.7" PostRunValue="4.7" />
</Setpoints>
</Column>
<Column DeterminesReadiness="false">
我尝试了以下方法,但没有效果:
%cd%\resources\XML.EXE sel -t -c "/GCContextualMethod/method[@xmlns=""]/GC[@PostRunHoldTime="0"]/Column[2]/Setpoints[@Mode="CONSTANT_FLOW"]/Flow[@State="ON"]@InitialValue" %cd%\GC78901.RapidControl.MethodXML.xml
答案1
在 powershell 中只需几行:
[xml]$XmlDocument = Get-Content -Path C:\...\test.xml
$XmlDocument.GCContextualMethod.method.GC.Column.Setpoints.Flow.InitialValue | Out-File c:\temp\result.txt
将其保存为某个 script.ps1,并将路径更改为真实 xml。结果 4.7 将输出到 txt 文件中。
请注意,在实际的 xml 文件中,所有元素(如“GCContextualMethod”或“method”)都必须有一个结束元素与开始元素配对。您的示例中没有体现这一点。因此,在创建示例时,我以 xml 结尾:
</GC>
</method>
</GCContextualMethod>