Se você estiver usando o mais recente ksh
- com o que quero dizer uma compilação recente de ksh93
- você pode realmente usá-lo. ksh93
suporta tipos de variáveis composto - que são um pouco como uma estrutura C - ou uma árvore de nós XML. Ele não suporta nativamente XML no momento - embora eu acredite que seja planejado - mas suporta json
agora.
Eu usei algumas coisas conversor on-line gratuito para obter um json
saída de sua amostra. Ainda assim, depois de limpar sua amostra, um pouco (o p em deve ser revestido por cima) Eu poderia fazer:
print -j queue.services.[@name]
... e foi recompensado com ...
GETME
Eu também posso fazer:
print -j queue.services[1].[@name]
... para obter em seu lugar ...
GETME2
No site de conversão vinculada eu tive que selecionar Delimitado por tabulações para evitar que ele ficasse em muitos espaços sem quebra, mas diferente disso parece ter saído ok. Certamente, existem ferramentas que você pode usar com facilidade para fazer conversões semelhantes localmente.
De qualquer forma, com ksh
você pode ler em uma árvore json
depois de copiá-la para sua área de transferência, assim como eu fiz, como:
read -m json queue <<<"$(xsel -bo)"
Depois de fazer isso, eu pude ver toda a estrutura como ...
print -j queue
... que imprimiu ...
{
"batchServices": [
{
"@name": "batch1",
"executor": {
"@className": "com.abc.xyz.qwer.qweqwewqe.ffdsdfsdfsdfsdf"
}
},
{
"@name": "batch2",
"executor": {
"@className": "com.abc.xyz.qwer.qweqwewqe.zxcsadsad"
}
}
],
"configfile": "sample.xml",
"connectionPools": [
{
"driver": "oracle.jdbc.driver.OracleDriver",
"maxConnections": "10",
"minConnections": "0",
"name": "asdasd",
"password": "$asdasd_PASSWORD",
"poolUrl": "jdbc:asdsad:asdasdsad",
"testSql": "select * from abc",
"url": "$asdasd_URL",
"userId": "$asdasd_USER"
}
],
"exceptionsFilterConfigFile": "asdasd.xml",
"keyInfoConfigFile": "asdasd.xml",
"services": [
{
"@backend": "ABC",
"@idleTime": "300",
"@max": "10",
"@min": "1",
"@name": "GETME",
"handlerContainer": {
"@className": "com.abc.xyz.wqere.abcqwere",
"handler": {
"@className": "com.abc.xyz.qweqweqwe.werwerwerwer"
}
},
"mqListener": {
"@copyMessageId": "true",
"@maxExpiry": "500",
"@minExpiry": "4",
"@queue": "ABC.getme",
"@suggExpiry": "30"
}
},
{
"@backend": "ABC",
"@idleTime": "300",
"@max": "10",
"@min": "1",
"@name": "GETME2",
"handlerContainer": {
"@className": "com.abc.xyz.wqere.abcqwere",
"handler": {
"@className": "com.abc.xyz.qweqweqwe.werwerwerwer"
}
},
"mqListener": {
"@copyMessageId": "true",
"@maxExpiry": "500",
"@minExpiry": "4",
"@queue": "ABC.getme2",
"@suggExpiry": "30"
}
}
]
}