hur.cn - 华软网

 热门搜索

CMarkup类操作XML文件的问题,求高手解答!

  作者:未知    来源:网络    更新时间:2011/1/10
<?xml version="1.0" encoding="UTF-8" ?>  
<MapList>
  <DownLoadTime>2011-1-1 13:00</DownLoadTime>
  <Map>
    <Map>
      <MapName>asdasd</MapName>
     </Map>
        
      <Map>
       <MapName>dasdasd</MapName>
      </Map>
   </Map>
</MapList>
如上这个XML资料,独自解析一个Map下的,能够获得MapName的值,然则2个或多个Map下的MapName如何获得,例子是2个Map
如果是一个不确定的值,如何猎取这个XML资料中有几多个Map,而且获得其中的MapName的值,谢谢!
---华软 网友回答---
急求解答,高手们吃完饭就帮我解答下啊
---华软网友回复---
你能够自己解析,自己写个解析函数也很简单,就是字符串的搜索,取完第一个MapName,直接把第一个值和第一个值前面的字符串删除掉,接着查找,直到找不到<MapName>为止
---华软网友回复---
不停的查找啊
用while循环遍历所有的map节点
---华软网友回复---
while(xml.FindItem("MAP",CString))
{
   //代码
}
---华软网友回复---
写个函数解析字符串,充分利用字符串的组合规律。
---华软网友回复---
引用 4 楼 shenyi0106 的回复:
while(xml.FindItem("MAP",CString))
{
  //代码
}

FindItem is not member of CMarkup
---华软网友回复---
引用 3 楼 xianglitian 的回复:
不停的查找啊
用while循环遍历所有的map节点

不太明白你所说的while循环遍历所有的map节点是什么意思。
我是这么做的
CMarkup xml;
xml.load("map.xml");
while(xml.FindChildElem("Map"))
{
  xml.Inio..        //单词忘记了
  xml.findchildelem("MapName");
  cstring str = xml.get..date  //单词又忘记了
}
如果只有一个map节点 我能够获得里面的值,然则有多个,这么写 str就是空的
---华软网友回复---
引用 5 楼 njhsliliangx 的回复:
写个函数解析字符串,充分利用字符串的组合规律。


完全不明白
---华软网友回复---
while(xml.FindElem("MAP"))
{
   //代码
}

---华软网友回复---
引用 6 楼 hooznn 的回复:
引用 4 楼 shenyi0106 的回复:
while(xml.FindItem("MAP",CString))
{
//代码
}

FindItem is not member of CMarkup

变通一下撒,我是记不得函数名了
---华软网友回复---
引用 7 楼 hooznn 的回复:
引用 3 楼 xianglitian 的回复:
不停的查找啊
用while循环遍历所有的map节点

不太明白你所说的while循环遍历所有的map节点是什么意思。
我是这么做的
CMarkup xml;
xml.load("map.xml");
while(xml.FindChildElem("Map"))
{
  xml.Inio.. //单词忘记了
  xml.find……

就是这样
然则into之后要记得出来
在出while之前要调用OutOfElem
---华软网友回复---
<?xml version="1.0" encoding="UTF-8" ?>   
<MapList>
  <DownLoadTime>2011-1-1 13:00</DownLoadTime>
  <Maps>
    <Map>
     <MapName>asdasd</MapName>
    </Map>
    
    <Map>
    <MapName>dasdasd</MapName>
    </Map>
  </Maps>
</MapList>

看了下FindElem
我是这么写的
CMarkup xml;
xml.load("Map1.xml");
while(findchildelem("Maps"))
{
  xml.intoelem();
  while(xml.findelem("Map"))
 {
    xml.findchildelem("MapName");
    cstring str = xml.getchliddate();  //问题就在这  str是空的 什么都猎取不到
 }
}
我又写了一个以下:

while(findchildelem("Maps"))
{
  xml.intoelem();
  while(xml.findchildelem("Map"))
 {
    xml.intoelem();
    xml.findchildelem("MapName");
    cstring str = xml.getchliddate();
    while(xml.findelem("Map"))
    {
         xml.findchildelem("MapName");
         cstring str1 = xml.getchliddate();
    }  
  }
}
这是第二种方法,如果只有2个Map元素的话,是能够正确获得Map元素下的子元素,然则如果是3个Map元素的话 str1就会猎取第三个map元素下的子元素,跳过第二个Map元素,如果我再加上outelem的话 就会跳过第一个元素,整的好迷糊。。。如果有高手,请指教我的代码那里有问题!如果有能够实现的代码也贴一下 谢谢!我也好研讨下!


---华软网友回复---
一下代码能够实现对你帖子中给出的例子的读取
你自己研讨一下吧
另外
你有两个级另外标签用的是一个名
这个不太合理
C++">
CMarkup xmlTest;
CString strTemp;

xmlTest.Load(_T("E:\\尝试项目\\2008Test\\Debug\\test.xml"));
xmlTest.ResetMainPos();
while(xmlTest.FindChildElem(_T("Map")))
{
xmlTest.IntoElem();
while(xmlTest.FindChildElem(_T("Map")))
{
xmlTest.IntoElem();
if(xmlTest.FindChildElem(_T("MapName")))
{
strTemp = xmlTest.GetChildData();
}
xmlTest.OutOfElem();
}
xmlTest.OutOfElem();
}

---华软网友回复---
while(findchildelem("Maps"))
{
  xml.intoelem();
  while(xml.findchildelem("Map"))
 {
  xml.intoelem();
  xml.findchildelem("MapName");
  cstring str = xml.getchliddate();
outelem();
   }
}
试试看
---华软网友回复---
引用 13 楼 xianglitian 的回复:
一下代码能够实现对你帖子中给出的例子的读取
你自己研讨一下吧
另外
你有两个级另外标签用的是一个名
这个不太合理

C/C++ code

    CMarkup    xmlTest;
    CString    strTemp;

    xmlTest.Load(_T("E:\\尝试项目\\2008Test\\Debug\\test.xml"));
    xmlT……


是我写错了  第一个是Maps。。然后下面的都是Map ,公司给的例子印的太模糊了
---华软网友回复---
已解决,发现原来其实我一起头用的措施就好用,只不过我加断点看的结果有问题,其实照旧能够正确猎取的
---华软网友回复---
晚上回家给分,单位电脑太慢      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。