这是我的解析代码:
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>
S_OK
那么,我做错了什么? 谢谢
尝试使用/govtalkmessage/header/messagedetails/qualifier进行xpath查询。
您需要为selectsinglenode调用提供xpath。XML文件中可能存在多个“限定符”,因此,如果您只是传递“限定符”,解析器将不知道返回哪个限定符。我使用xpath的次数不多,但我认为这个字符串应该适用于查询:“header/messagedetails[0]/qualifier”