我尝试对以下内容进行简单解析以捕获NewCaseId,但在使用DOMParser和xpath时没有成功。
我创建了一个lambda函数,它可以命中端点并成功返回原始响应,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://<companyname>/<PlatformServices>/GeneralRequest"><?xml version="1.0" encoding="utf-16"?>
<Response>
<Case Status="Success" Id="75ba8279-579b-42b6-9c1f-1184f1e076ae" NewCaseId="13825964-8931-4eb5-b60b-f519dbe3ea9c">
<InsuranceCaseID>LAMBDA TEST</InsuranceCaseID>
</Case>
</Response></string>
在我的lambda函数中有以下代码片段(代码片段已经简化):
const textValue = await response.text();
const doc = new DOMParser().parseFromString(textValue);
console.log(`doc : ` + doc);
const select = useNamespaces({ vpc: 'http://<companyname>/PlatformServices/GeneralRequest' });
const xml = select('//vpc:string/text()', doc)[0].nodeValue;
const doc2 = new DOMParser().parseFromString(xml, 'text/xml');
console.log(`doc2 : ` + doc2);
const xml2 = select('/Response/Case', doc2);
console.log(`xml2 : ` + xml2);
这将xml分解为
<Case Status="Success" Id="75ba8279-579b-42b6-9c1f-1184f1e076ae" NewCaseId="13825964-8931-4eb5-b60b-f519dbe3ea9c">
<InsuranceCaseID>LAMBDA TEST #2</InsuranceCaseID>
</Case>
但问题是如何提取NewCaseId。有人有什么想法吗?(而且,分解NewCaseId看起来相当复杂,所以任何想法都会很有帮助。即使使用其他包,如xml 2 js或xml-js)
提取是通过节点提取完成的'
我是nodej和Lambda的新手,所以我还在学习。
1条答案
按热度按时间7gcisfzg1#
xml
变量的内容是否可能包含html实体(<
和>
)而不是文字字符(<
和>
)?如果是这样,那么parseFromString(xml...)
将不会按照您希望的方式工作。