如何使用 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
一切顺利
我是初学者。
我需要在 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
一切顺利