Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将XML名称空间URI解析为Poco DOM C++; 我试图用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;_C++_Xml_Soap_Poco Libraries - Fatal编程技术网

将XML名称空间URI解析为Poco DOM C++; 我试图用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;

将XML名称空间URI解析为Poco DOM C++; 我试图用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;,c++,xml,soap,poco-libraries,C++,Xml,Soap,Poco Libraries,为什么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&qu

为什么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>

uuid:6cd92809-5887-7b13-0ae9-290514f24b6f
78e87394-8ba6-41a7-a4c9-8769306a8a0b
http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous
http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches
urn:uuid:229c62c6-0903-246d-05bd-7193031a5f5c
dn:网络视频发射机tds:设备
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
http://192.168.1.160:8000/onvif/device_service
1.

它们不是“属性”。它们是名称空间声明。名称空间声明是XML标准的一部分,就像尖括号和引号一样。这就是为什么它不会出现在DOM中


我强烈建议您在尝试其他内容之前先学习一些关于XML/XSD/SOAP的在线教程。之后,回来编辑你的问题。告诉我们您实际想做什么-如果我们知道真正的目标是什么,我们可能会帮助您更好。

感谢您澄清属性和名称空间声明之间的区别。我正在尝试解析SOAP消息,它是WS-Discovery实现的一部分。标记内部有两种类型,每种类型都有不同的名称空间前缀。使用Poco,您可以使用DOM解析器获得给定元素的名称空间URI。根据,如果给定字符串前缀,则无法解析命名空间URI。因为Poco没有;有一个getNamespaces()方法;将文本名称空间前缀转换为相应名称空间URI的正确方法是什么?解析它们的目的是将它们提供给用户我建议您仔细查看。我简要地扫描了Poco文档。根据第一印象,如果名称空间不受支持,我会非常惊讶。如果有帮助,名称空间将出现在每个元素/属性上,因此您应该在这里查找getNamespace()访问器函数。
<?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>