繁体   English   中英

使用xmlstarlet或xmllint获取属性值

[英]get attribute value using xmlstarlet or xmllint

自从过去两天以来,我已经经历了几个问题但尚未找到解决方案。 这是我的xml:

<?xml version="1.0" encoding="UTF-8"?>

<Environment xmlns="http://schemas.dmtf.org/ovf/environment/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:oe="http://schemas.dmtf.org/ovf/environment/1" xmlns:ve="http://www.vmware.com/schema/ovfenv" oe:id="" ve:vCenterId="">
  <PropertySection>
<Property oe:key="vami.hostname" oe:value="jal"/>
<Property oe:key="vamitimezone" oe:value="Asia/Kolkata"/>
<Property oe:key="ABC_enable" oe:value="1"/>
<Property oe:key="software_only_installer_name" oe:value="install-r8-0-0-0"/>
<Property oe:key="software_only_staging_dir" oe:value="/media/dir"/>
<Property oe:key="software_only_mount_dir" oe:value="/media/cdrom"/>
  </PropertySection>
</Environment>

我想在oe:key =“ABC_enable”时得到属性值(oe:value)。

我曾多次尝试使用xmllint和xmlstarlet,但无法得到我想要的东西。 你能帮忙吗?

使用xmlstarlet工具的正确方法:

xmlstarlet sel -N oe="http://schemas.dmtf.org/ovf/environment/1" \
-N ve="http://www.vmware.com/schema/ovfenv" --net -t -v \
'//oe:Property[@oe:key="ABC_enable"]/@oe:value' -n input.xml

输出:

1

所以我能够通过awk完成这项工作。

awk '/ABC_enable/{print $4}' FS='"' xmlfile.xml

这对我有用,因为“ABC_enable”只会在此文件中出现一次,格式将始终保持不变。 我理解这个解决方案不是通用的,但它完成了我的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM