提问人:TTBox 提问时间:8/11/2022 更新时间:8/12/2022 访问量:186
使用 DomParser 解析 XML 后获取令牌文本
Obtain token text after parsing XML with DomParser
问:
我在 NodeJS 中使用 DomParser 时遇到了一些问题。因此,我从 Microsoft API 获得响应,并对其进行解析
const dom = new DomParser().parseFromString(rawData, "text/xml");
console.log(dom);
上面的输出如下所示
<?xml version="1.0" encoding="utf-8"?>
<S:Envelope
xmlns:wsa="http://www.w3.org/2005/08/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust"
xmlns:S="http://www.w3.org/2003/05/soap-envelope">
<S:Header>
//some header stuff
</S:Header>
<S:Body
xmlns:S="http://www.w3.org/2003/05/soap-envelope">
<wst:RequestSecurityTokenResponse
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust">
<wst:TokenType>urn:passport:compact</wst:TokenType>
<wst:RequestedSecurityToken>
<wsse:BinarySecurityToken Id="Compact0"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">Some Token
</wsse:BinarySecurityToken>
</wst:RequestedSecurityToken>
</wst:RequestSecurityTokenResponse>
</S:Body>
</S:Envelope>
我已经删除了一些不相关的标签,但我想获得的是其中的令牌,上面是测试一些令牌。所以有了上面的 dom,我做到了BinarySecurityToken
const node = dom.getElementsByTagName("wsse:BinarySecurityToken");
console.log(node);
但这似乎输出了以下内容
[
Node {
namespace: 'BinarySecurityToken',
text: undefined,
_selfCloseTag: false
}
]
那么如何使用此 DomParser 获取令牌呢?
谢谢
答:
1赞
Jack Fleeting
8/12/2022
#1
首先,返回具有给定标签名称的元素的实时 HTMLCollection;你只需要第一个 - 所以添加.
第二 - 标记是一个文本元素,它是第一个元素的子元素;你也需要考虑到这一点。getElementsByTagName
[0]
所以一起:
node = dom.getElementsByTagName("wsse:BinarySecurityToken")[0];
console.log(node.firstChild.nodeValue)
输出:
Some Token
评论