Bash脚本使用XMLStarlet将xml元素解析为key=value对
我有一个包含用户数据的xml文件(文件名:myFile.xml):Bash脚本使用XMLStarlet将xml元素解析为key=value对,xml,bash,sh,xmlstarlet,Xml,Bash,Sh,Xmlstarlet,我有一个包含用户数据的xml文件(文件名:myFile.xml): <?xml version="1.0" encoding="utf-8"?> <params> <username>jDoe</username> <password>abc123</password> <firstname>John</firstname> <lastname>Doe<
<?xml version="1.0" encoding="utf-8"?>
<params>
<username>jDoe</username>
<password>abc123</password>
<firstname>John</firstname>
<lastname>Doe</lastname>
<email>jdoe@example.com</email>
<country>Germany</country>
</params>
当我运行它时,我得到:
jDoe
abc123
John
Doe
jdoe@example.com
Germany
如何将每个值与其相对名称关联,并创建一个bash脚本变量,如下所示:
username="jDoe"
password="abc123"
firstname="John"
lastname="Doe"
email="jdoe@example.com"
country="Germany"
换句话说,对于每个标记,我想读取它的名称和值,然后从中创建一个bash变量。即:
tagname="value"
我更喜欢循环遍历标记,因为它们比这个示例多得多,而且并不总是相同的
有什么建议吗
xmlstarlet select --template --match "//params/*" --value-of "concat(name(),'=\"',text(),'\"')" -n file.xml
输出:
username="jDoe"
password="abc123"
firstname="John"
lastname="Doe"
email="jdoe@example.com"
country="Germany"
username=“jDoe”
password=“abc123”
firstname=“约翰”
lastname=“Doe”
电子邮件=”jdoe@example.com"
国家=“德国”
文件名前的
-n
是什么?@dawg:-n
在每个键值对后添加新行。
username="jDoe"
password="abc123"
firstname="John"
lastname="Doe"
email="jdoe@example.com"
country="Germany"