如何使用 Xmlint 从 XML 文件映射特定值?

How can I use Xmlint to map a certain value from a XML file?

我是初学者。

我需要在 linux 中编写一个自动化命令行脚本(但还没有取得成功),它可以映射值 sandbox_id= 并输出它,使用 xml 作为如下:

    <?xml version="1.0" encoding="UTF-8"?>
<sandboxinfo xmlns="https://analysiscenter.veracode.com/schema/4.0/sandboxinfo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://analysiscenter.veracode.com/schema/4.0/sandboxinfo https://analysiscenter.veracode.com/resource/4.0/sandboxinfo.xsd" sandboxinfo_version="1" account_id="1" app_id="1">
   <sandbox sandbox_id="1" sandbox_name="SANDBOX" sandbox_status="1" owner="1" modified_date="1" created_date="1" expires="1" auto_recreate="1">
      <customfield name="Custom 1" value="" />
      <customfield name="Custom 2" value="" />
      <customfield name="Custom 3" value="" />
      <customfield name="Custom 4" value="" />
      <customfield name="Custom 5" value="" />
   </sandbox>
</sandboxinfo>

我试过如下使用 xmllint,但没有得到任何结果:

xmllint --xpath 'string(/sandbox/@sandbox_id)' output.xml

也尝试过:

xmllint --xpath 'string(/*[local-name()="sandbox"]/@sandbox_id)' output.xml

非常感谢任何帮助

您的两次 xpath 尝试都希望 sandbox 成为根元素,但事实并非如此。

尝试 xpath 'string(//*[local-name()="sandbox"]/@sandbox_id)'

'string(/*/*[local-name()="sandbox"]/@sandbox_id)'代替。

正如 Daniel Haley 所说,xpath 希望沙箱成为根元素,尽管事实并非如此。 使用:

xmllint --xpath 'string(//*[local-name()="sandbox"]/@sandbox_id)' output.xml

一切顺利