проблема с анализом XML-файла с MSXML4 в C ++ - PullRequest
0 голосов
/ 03 декабря 2009

Вот мой код анализа:

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

Итак, что я делаю не так? Спасибо

Ответы [ 2 ]

1 голос
/ 06 декабря 2009

Try / GovTalkMessage / Header / MessageDetails / Квалификатор для запроса XPath.

0 голосов
/ 03 декабря 2009

Вам необходимо указать xpath для вызова selectSingleNode. В XML-файле может присутствовать несколько «Qualifier», поэтому в случае, если вы просто передадите парсер «Qualifier», он не знает, какой из них вернуть. Я не использовал XPath слишком много раз, но я думаю, что эта строка должна работать для запросов: "Header / MessageDetails [0] / Qualifier"

...