2009-12-03 44 views
0

這裏是我的解析代碼:問題解析與MSXML4一個XML文件中的C++

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> 
  • kNameOfchild是 「預選賽」
  • pNode總是NULL
  • pChildNode總是NULL
  • 小時返回S_OK
  • numOfChildNodes始終爲0

那麼,我究竟做錯了什麼? 謝謝

回答

1

用於XPath查詢的Try/GovTalkMessage/Header/MessageDetails/Qualifier。

0

您需要爲selectSingleNode調用提供xpath。 XML文件中可能有多個「限定符」,所以如果你只是通過「限定符」解析器不知道要返回哪一個。我沒有太多次使用過XPath,但是我認爲這個字符串應該用於查詢:「Header/MessageDetails [0]/Qualifier」

+0

nope。如果我找到了某些東西,我會更新你。 – cbrulak 2009-12-03 16:15:47