我正在尝试使用Poco c++解析SOAP消息的信封根标记中的命名空间URI属性。我正在使用一个DOMParser来阅读它。我使用下面的方法来解析属性。但是,函数没有返回任何属性。
Poco::XML::NamedNodeMap * nnm = pDoc->documentElement()->attributes();
std::cout << "Node Name:" << pDoc->documentElement()->nodeName() <<std::endl;
std::cout << "NNS size : " << nnm->length() << std::endl;
运行上述代码的结果
Node Name: Envelope
NNS size : 0
为什么Dom解析器不能将名称空间URI解析为属性?可以解析它们吗?
下面是SOAP消息
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope
xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:enc="http://www.w3.org/2003/05/soap-encoding"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsa5="http://www.w3.org/2005/08/addressing"
xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery"
xmlns:dn="http://www.onvif.org/ver10/network/wsdl"
xmlns:tt="http://www.onvif.org/ver10/schema"
xmlns:tds="http://www.onvif.org/ver10/device/wsdl">
<s:Header>
<wsa:MessageID>uuid:6cd92809-5887-7b13-0ae9-290514f24b6f</wsa:MessageID>
<wsa:RelatesTo>78e87394-8ba6-41a7-a4c9-8769306a8a0b</wsa:RelatesTo>
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
<wsa:Action>http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches</wsa:Action>
</s:Header>
<s:Body>
<d:ProbeMatches>
<d:ProbeMatch>
<wsa:EndpointReference>
<wsa:Address>urn:uuid:229c62c6-0903-246d-05bd-7193031a5f5c</wsa:Address>
</wsa:EndpointReference>
<d:Types>dn:NetworkVideoTransmitter tds:Device</d:Types>
<d:Scopes>onvif://www.onvif.org/location/country/china onvif://www.onvif.org/type/video_encoder onvif://www.onvif.org/name/IP-Camera onvif://www.onvif.org/hardware/HI3518C onvif://www.onvif.org/Profile/Streaming onvif://www.onvif.org/Profile/T onvif://www.onvif.org/Profile/G onvif://www.onvif.org/Profile/C onvif://www.onvif.org/Profile/A</d:Scopes>
<d:XAddrs>http://192.168.1.160:8000/onvif/device_service</d:XAddrs>
<d:MetadataVersion>1</d:MetadataVersion>
</d:ProbeMatch>
</d:ProbeMatches>
</s:Body>
</s:Envelope>
发布于 2020-08-24 16:17:14
它们不是“属性”。它们是名称空间声明。名称空间声明是XML标准的一部分,如尖括号和引号。这就是为什么它没有出现在DOM中的原因。
我强烈建议您在尝试其他内容之前,先学习一些关于XML/XSD/SOAP的在线教程。在那之后,回来编辑你的问题。告诉我们你到底想做什么--如果我们知道真正的目标是什么,我们可能会做得更好。
https://stackoverflow.com/questions/63564185
复制相似问题