javascript - 使用正则表达式从 XML 中提取字符串
问题描述
我有 xml 作为文本。
我需要提取标签之间的字符串“20”:
<ans:sequencialTransacao>2020</ans:sequencialTransacao>
我已经尝试了下面的脚本,但它不起作用。
const matches = this.codeXML.matchAll(
/<ans:sequencialTransacao> (.*?) <\/ans:sequencialTransacao>/gm
);
console.log(Array.from(matches, (x) => x[1]));
//XML
<ans:identificacaoTransacao>
<ans:tipoTransacao>ENVIO_LOTE_GUIAS</ans:tipoTransacao>
<ans:sequencialTransacao>20</ans:sequencialTransacao>
<ans:dataRegistroTransacao>2020-07-13</ans:dataRegistroTransacao>
<ans:horaRegistroTransacao>20:48:28</ans:horaRegistroTransacao>
</ans:identificacaoTransacao>
解决方案
如果你需要一个快速而肮脏的解决方案,试试这个:
var xml = `<ans:identificacaoTransacao>
<ans:tipoTransacao>ENVIO_LOTE_GUIAS</ans:tipoTransacao>
<ans:sequencialTransacao>20</ans:sequencialTransacao>
<ans:dataRegistroTransacao>2020-07-13</ans:dataRegistroTransacao>
<ans:horaRegistroTransacao>20:48:28</ans:horaRegistroTransacao>
</ans:identificacaoTransacao>`
xml.split("<ans:sequencialTransacao>")[1].split("<")[0]; // Returns "20"
否则,请查看xml2json。
新解决方案(更干净):
function getXMLValue(tagName, xmlStr) {
var tagValue = xmlStr.substring(
xmlStr.lastIndexOf(tagName) + tagName.length,
xmlStr.lastIndexOf(tagName.replace("<", "</"))
);
return tagValue;
}
用法:
var xml = `<ans:identificacaoTransacao>
<ans:tipoTransacao>ENVIO_LOTE_GUIAS</ans:tipoTransacao>
<ans:sequencialTransacao>20</ans:sequencialTransacao>
<ans:dataRegistroTransacao>2020-07-13</ans:dataRegistroTransacao>
<ans:horaRegistroTransacao>20:48:28</ans:horaRegistroTransacao>
</ans:identificacaoTransacao>`;
getXMLValue("<ans:sequencialTransacao>", xml); // Returns "20"
推荐阅读
- java - 调用带参数和不带参数的函数有什么区别?
- python - 将 pyinstaller 与 --noconsole --onefile 一起使用时 subprocess.run 不起作用
- c# - Visual Studio 2019 IIS 配置文件创建破坏 Azure 应用服务的 web.config 文件
- json - 将 api 响应转换为 pandas
- installation - 使用配置文件选择要与 Inno Setup 一起安装的组件
- javascript - iOS 远程通知不起作用 react-native-firebase [v6]
- vba - Access VBA:记录集不适用于特定查询?
- javascript - useEffect 无法直接调用函数?
- flutter - Provider.of<> 使用 ChangeNotifierProxyProvider 返回 null?
- python - 如何让 python 程序在 for 循环/if 语句中执行相反的操作?