<routing>
- <tcp>
- <node>
- <this>
- <id>
  <province>21</province> 
  <city>01</city> 
  <type>02</type> 
  <sn>ffffff</sn> 
  </id>
  </this>
- <dpd>
- <id>
  <province>21</province> 
  <city>01</city> 
  <type>09</type> 
  <sn>000000</sn> 
  </id>
  </dpd>
  </node>
</tcp>
</routing>
下面的程序是我写的想得到province的值,可是用TRACE查看什么也没有。         CMarkup xml;
xml.Load("routing.xml");
while (xml.FindChildElem("tcp"))
{
xml.FindChildElem("province");
CString csSN = xml.GetData();
TRACE("\n---NAME:%s---\n",csSN);
}

解决方案 »

  1.   

    我觉得一个FindChildElem进入不到province吧
    它被包了这么多层,<tcp>
    - <node>
    - <this>
    - <id> 
    当然要多FindChildElem几下,还有既然“找到”了,就要进入,你不进去,怎么看?xml.IntoElem();xml.OutOfElem();
      

  2.   

    <routing> 
    <tcp> 
    <node> 
    <this> 
    <id> 
    <province>21 </province> 
    <city>01 </city> 
    <type>02 </type> 
    <sn>ffffff </sn> 
    </id> 
    </this> 
    <dpd> 
    <id> 
    <province>21 </province> 
    <city>01 </city> 
    <type>09 </type> 
    <sn>000000 </sn> 
    </id> 
    </dpd> 
    </node> 
    </tcp> 
    </routing> 树结构不对,一个是this一个是dpd当然没法循环了,如果把dpd也改成this的话,应该这样写,我没测试,我写一下你参考一下:
    CMarkup xml; 
    xml.Load("routing.xml"); 
    xml.FindElem("routing");
    xml.FindChildElem("tcp");
    xml.IntoElem();
    xml.FindChildElem("node");
    xml.IntoElem();
    while (xml.FindChildElem("this")) 

    xml.IntoElem();
    xml.FindChildElem("id"); 
    xml.IntoElem();
    xml.FindChildElem("province");
    CString csSN = xml.GetData(); 
    TRACE("\n---NAME:%s---\n",csSN); 
    }
      

  3.   

    <routing> 
        <tcp> 
            <node> 
                <this> 
                    <id> 
                        <province>21 </province> 
                        <city>01 </city> 
                        <type>02 </type> 
                        <sn>ffffff </sn> 
                    </id> 
                </this> 
                <dpd> 
                    <id> 
                        <province>21 </province> 
                        <city>01 </city> 
                        <type>09 </type> 
                        <sn>000000 </sn> 
                    </id> 
                </dpd> 
            </node> 
        </tcp> 
    </routing> 树结构不对,一个是this一个是dpd当然没法循环了,如果把dpd也改成this的话,应该这样写,我没测试,我写一下你参考一下:
    CMarkup xml; 
    xml.Load("routing.xml"); 
    xml.FindElem("routing");xml.FindChildElem("tcp");
    xml.IntoElem(0);
    xml.FindChildElem("node");
    xml.IntoElem(0);
    while (xml.FindChildElem("this")) 

    xml.IntoElem(0);
    xml.FindChildElem("id"); 
    xml.IntoElem(0);
    xml.FindChildElem("province");
    CString csSN = xml.GetData(); 
    TRACE("\n---NAME:%s---\n",csSN); 
    }