我想用一些动态名称更新xml文件中的一个元素。 名称(paraName)始终是GLOBPARA,后跟数字,如以下示例所示。这些是我要更改值的元素。
文件中还填充了一些元素,这些元素也以GLOBPARA开头,但后面没有简单的数字。这些我不想更改的元素。
使用以下命令,我可以更改每个名称中具有GLOBPARA的元素。包括不需要的。 xmlstarlet ed --update“ // globPara [包含(paramName,'GLOBPARA')] / paramValue” -v“ 100” test.xml
问题: 如何仅更改包含字符串(GLOBPARA)和一些随机数字的那些字符?
之前:
FB --> My Server --> Dialogflow
Dialogflow --> My Server --> FB
想要的结果:
<?xml version="1.0" encoding="UTF-8"?>
<container>
<dataList>
<globPara>
<paramName>GLOBPARA260</paramName>
<paramValue>0</paramValue>
</globPara>
<globPara>
<paramName>GLOBPARAMON_BAD_TEST_18_1_SGB_IV</paramName>
<paramValue>2555</paramValue>
</globPara>
</dataList>
</container>
我用regex d +进行了尝试,但是没有用。
<?xml version="1.0" encoding="UTF-8"?>
<container>
<dataList>
<globPara>
<paramName>GLOBPARA260</paramName>
<paramValue>100</paramValue>
</globPara>
<globPara>
<paramName>GLOBPARAMON_BAD_TEST_18_1_SGB_IV</paramName>
<paramValue>2555</paramValue>
</globPara>
</dataList>
</container>
答案 0 :(得分:2)
您可以在XPath下方尝试
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>LIG Boilerplate</title>
<script src="https://custom-salesforce-domain/externalApps/lightning/lightning.out.js"></script>
<script>
let inputVariables = [];
$Lightning.use("c:SGMVAOutside", function() {
$Lightning.createComponent("lightning:flow", {},
"container",
function (component) {
component.startFlow("SG_MVA_Triage_Flow_Lightning_Out", inputVariables);
})
;},
'https://custom-salesforce-domain/externalApps'
);
</script>
</head>
<body>
<p>It works !!!</p>
<div id='container'>
</div>
</body>
</html>
这将返回//globPara[number(substring-after(paramName, 'GLOBPARA'))>=0]/paramValue
节点的paramValue
,其中包含globPara
个子节点,其子文本格式为paraName
,其中GLOBPARAXXX
是 ANY 正数