<?xml version="1.0" encoding="utf-8" ?> 
- <Maps> 
- <Map xmlns="http://www.semi.org" SubstrateId="695823901F1" SubstrateType="Wafer" FormatRevision="SEMI G85-0703"> 
- <Device Rows="36" LotId="6958239.013" BinType="ASCII" Columns="38" MapType="Array" NullBin="0" ProductId="K25A" WaferSize="200" CreateDate="20091106130620353" DeviceSizeX="5082.95000" DeviceSizeY="5262.95000" Orientation="0" SupplierName="Micron Technology, Inc." OriginLocation="2" MicronLotId="6958239.013"> 
  <ReferenceDevice ReferenceDeviceX="27" ReferenceDeviceY="35" /> 
  <Bin BinCode="G" BinCount="906" BinQuality="Pass" /> 
  <Bin BinCode="X" BinCount="170" BinQuality="Fail" /> 
- <Data> 
- <Row> 
- <![CDATA[ 00000000000000XXGXGGGGXX00000000000000 
  ]]> 
  </Row> 
- <Row> 
- <![CDATA[ 00000XXGGGGGGGGGGGGGGGGGGGGXXGGGX00000 
  ]]> 
  </Row> 
- <Row> 
- <![CDATA[ 000000XXGGGGGGGGXGXGGGGGGGGGGGXX000000 
  ]]> 
  </Row> 
- <Row> 
- <![CDATA[ 00000000GGGGGGXGGGGGGGGGGGGGGG00000000 
  ]]> 
  </Row> 
- <Row> 
- <![CDATA[ 000000000XGGGGGGGGGGGGGXGXGGX000000000 
  ]]> 
  </Row> 
- <Row> 
- <![CDATA[ 00000000000XGGGGXGXGGGGGGGX00000000000 
  ]]> 
  </Row> 
- <Row> 
- <![CDATA[ 00000000000000XGGGXXGGXX00000000000000 
  ]]> 
  </Row> 
  </Data> 
  </Device> 
  </Map> 
</Maps> 
我的xml文件如上。我想要提取 row 中的数据 (cdata 后面的数据)。之前有高人指点,我用如下方法:IXMLDOMElement *pRootElement=NULL;
    IXMLDOMNode *pRootNode=NULL;
    IXMLDOMNamedNodeMap *pAttrMap=NULL;
    IXMLDOMNode *pAttrNode=NULL;
    IXMLDOMNode *pAddrNode=NULL;
    CString strName,strText;
    BSTR bsName,bsText;
    hr=pDoc->get_documentElement(&pRootElement);
    if(SUCCEEDED(hr) && (pRootElement!=NULL))
    {
        hr=pRootElement->QueryInterface(IID_IXMLDOMNode,(void**)&pRootNode);
        if(SUCCEEDED(hr))
        {
            hr=pRootNode->get_firstChild(&pAddrNode);
            if(SUCCEEDED(hr) && (pAddrNode!=NULL))
            {
                pAddrNode->get_attributes(&pAttrMap);
                long length=0;
                pAttrMap->get_length(&length);
                for(int i=0;i<length;i++)
                {
                    hr=pAttrMap->get_item(i,&pAttrNode);
                    if(SUCCEEDED(hr) && (pAttrNode!=NULL))
                    {
                        pAttrNode->get_nodeName(&bsName);
                        pAttrNode->get_text(&bsText);
                        strName=bsName;
                        strText=bsText;
                        
                        SysFreeString(bsName);
                        SysFreeString(bsText);
                    }
                }
            }
        }
    }我用这种方法,变量 strName 和 strText 能提取到 xmlns="http://www.semi.org" SubstrateId="695823901F1" SubstrateType="Wafer" FormatRevision="SEMI G85-0703" 中的东西。
请问,如何以上代码用同样的方法提取到row 中的数据 (cdata 后面的数据)。也就是00000000000000XGGGXXGGXX00000000000000  这些数据?
在线等,给代码的多加分。

解决方案 »

  1.   

    hr=pRootNode->get_firstChild(&pAddrNode);
                if(SUCCEEDED(hr) && (pAddrNode!=NULL))
                {
                    pAddrNode->get_attributes(&pAttrMap);
                    long length=0;
                    pAttrMap->get_length(&length);
                    for(int i=0;i<length;i++)
                    {
                        hr=pAttrMap->get_item(i,&pAttrNode);
                        if(SUCCEEDED(hr) && (pAttrNode!=NULL))
                        {
                            pAttrNode->get_nodeName(&bsName);
                            pAttrNode->get_text(&bsText);
                            strName=bsName;
                            strText=bsText;
                            
                            SysFreeString(bsName);
                            SysFreeString(bsText);
      

  2.   

    你要读的那个是注释,你要找读取注释的API