使用类型

使用类型

我在 Windows 的命令行中使用 tshark (wireshark) 捕获了一些数据包,然后以.xml- 格式保存了文件。现在我想.xml在命令行中读取该文件。

如何在命令行中读取 xml 文件?

答案1

假设您希望解析 SOAP 信封/包内的实际 XML,您可以使用 PowerShell 来实现 - 如果您希望解析实际的 SOAP 数据,则需要通过更高级语言的工作器来使用它,我不知道这是否可以通过 PowerShell 来实现。

关于将 SOAP 消息解析为 XML 结构 - 有效地忽略所有与 SOAP 相关的节点并获取实际嵌入的 XML:

  1. 您需要知道节点名称。例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope
      xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
      soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
      <soap:Header>
        ...
      </soap:Header>
      <soap:Body>
        <encapsulatingNodeOfInterest>
          <childNodeOfInterest exampleAttribute="exampleValue">
            exampleInnerContent
          </childNodeOfInterest>
          <childNodeOfInterestToo exampleAttribute="exampleValue">
            exampleInnerContent
          </childNodeOfInterestToo>
        </encapsulatingNodeOfInterest>
        <soap:Fault>
          ...
        </soap:Fault>
      </soap:Body>
    </soap:Envelope>
    

    ...要选择的节点是encapsulatingNodeOfInterest

  2. 使用-argument 访问文件-Path并将其指向该文件:

    Select-Xml -Path ".\soap.xml"
    
  3. 添加-argument 来指定您想要选择的-XPath节点( ):encapsulatingNodeOfInterest

    Select-Xml -Path ".\soap.xml" -XPath "//encapsulatingNodeOfInterest"
    

    ...这将输出节点、路径和模式

  4. 假设您希望遍历所有子节点,将节点“管道”encapsulatingNodeOfInterestForEach-Object访问的循环中InnerXml

    Select-Xml -Path ".\soap.xml" -XPath "//encapsulatingNodeOfInterest" | ForEach-Object { $_.Node.InnerXml }
    

    ...这将输出节点内的所有子节点encapsulatingNodeOfInterest,即childNodeOfInterest给定示例中的“childNodeOfInterestToo”。

注意:有关如何使用 Select-Xml 的示例,请访问带有 -attribute 的命令的帮助-Examples

Get-Help Select-Xml -Examples

答案2

假设您使用的是 Windows,则可以使用两种方法,具体取决于您所说的“在命令行中读取该 xml 文件”

使用类型

命令提示符知道一个名为的命令,type该命令将文件的内容显示到显示器上。

C:\>type filename.xml
<xml file>
    variable
</xml file>

C:\>_

如果 xml 文件很大,您可以将其传送到 more 命令,以便您当时看到一个页面。

C:\>type filename.xml | more

启动文件并让 Windows 使用默认的 xml 查看器打开它

另一个选项是让 Windows 使用默认的 xml 查看器打开文件。假设 Internet Explorer 是您的默认 xml 查看器,以下命令将启动 Internet Explorer,打开 XML 文件并切换到它。单击 x 即可返回命令行程序(除非您切换到其他应用程序)

在默认程序中启动该文件的命令称为start

C:\>start filename.xml

结论

我个人认为启动是首选模式,因为默认的 xml 查看器会有语法高亮显示,而命令窗口没有,但如果 xml 文件很小,并且您想快速查找文本、复制它并在新命令中使用它,那么 type 命令将是首选。

相关内容