我必须从XML文件中读取特定的标记属性并将它们返回到Template-Document 我已经完成了读取文件本身,现在我怎样才能读取一个标签并解析其属性?
<?xml version="1.0" encoding="UTF-8"?>
<instances
name="instance-name"
port="60535"
username="bar"
password="foo"
string_var="barfoo">
some xml (up to 5k lines and 3 k elements i do not need)
</instances>
在遇到“&gt;”之前,我该如何阅读字符串?为实例?如何将值放入变量?
通缉输出:
TPAR_PORT = 60535
TPAR_USERNAME = bar
TPAR_PASSWORD = foo
TPAR_INSTANCE = instance-name
顺便说一下,如果值带或不带单引号
,则无关紧要答案 0 :(得分:1)
使用正确的XML解析器。您的示例不是格式良好的XML,但XML语句中不允许使用foo
和bar
,它必须以?>
结尾,而不是简单的>
。此外,应使用encoding
代替charset
。
修复文件后,您可以开始使用正确的工具。
<?xml version="1.0" charset="UTF-8"?>
<instances
name="instance-name"
port="60535"
username="bar"
password="foo"
string_var="barfoo">
some xml
</instances>
例如,您可以使用xmllint
及其--shell
选项:
$ xmllint 1.xml --shell <<<'cat /instances/@port'
/ > cat /instances/@port
-------
port="60535"
/ >
我最喜欢的工具是xsh:
$ xsh <<<'open 1.xml ; echo /instances/@port'
60535
答案 1 :(得分:0)
这个怎么样
while read
do
eval $REPLY 2>/dev/null
done < a.xml