C++ 在C+;中使用MSXML4解析xml文件时出现问题+;
这是我的解析代码:C++ 在C+;中使用MSXML4解析xml文件时出现问题+;,c++,msxml4,C++,Msxml4,这是我的解析代码: MSXML2::IXMLDOMNodePtr pNode = m_pXmlDoc->selectSingleNode(kNameOfChild.c_str()); MSXML2::IXMLDOMNodeListPtr pIDOMNodeList = NULL; MSXML2::IXMLDOMNodePtr pIDOMNode = NULL; long numOfChildNodes= 0; BSTR bstrItemText; HRESULT hr; MSXML2:
MSXML2::IXMLDOMNodePtr pNode = m_pXmlDoc->selectSingleNode(kNameOfChild.c_str());
MSXML2::IXMLDOMNodeListPtr pIDOMNodeList = NULL;
MSXML2::IXMLDOMNodePtr pIDOMNode = NULL;
long numOfChildNodes= 0;
BSTR bstrItemText;
HRESULT hr;
MSXML2::IXMLDOMElementPtr pChildNode = m_pXmlDoc->getElementsByTagName(kNameOfChild.c_str());
hr = m_pXmlDoc->get_childNodes(&pIDOMNodeList);
hr = pIDOMNodeList->get_length(&numOfChildNodes);
和我的xml文件:
<?xml version="1.0"?>
<GovTalkMessage>
<EnvelopeVersion>1.0</EnvelopeVersion>
<Header>
<MessageDetails>
<Class>MOSWTSC2</Class>
<Qualifier>acknowledgement</Qualifier>
<Function>submit</Function>
<TransactionID>20021202ABC</TransactionID>
<CorrelationID>B07B9ED3176193DDC4EC39063848A927</CorrelationID>
<ResponseEndPoint PollInterval="10">
https://secure.gateway.gov.uk/poll
</ResponseEndPoint>
<GatewayTimestamp>2001-01-31T10:20:18.345</GatewayTimestamp>
</MessageDetails>
<SenderDetails/>
</Header>
<GovTalkDetails>
<Keys/>
</GovTalkDetails>
<Body/>
</GovTalkMessage>
1
MOSWTSC2
确认
提交
20021202ABC
B07B9ED3176193DDC4EC39063848A927
https://secure.gateway.gov.uk/poll
2001-01-31T10:20:18.345
- kNameOfchild是“限定词”
- pNode总是空的
- pChildNode始终为空
- hr返回
S\u OK
- numOfChildNodes始终为0
谢谢您需要为selectSingleNode调用提供xpath。XML文件中可能存在多个“限定符”,所以若只是传递“限定符”,解析器不知道返回哪一个。我没有太多次使用XPath,但我认为这个字符串应该用于查询:“Header/MessageDetails[0]/Qualifier”尝试/GovTalkMessage/Header/MessageDetails/Qualifier进行XPath查询