请大家帮忙看看,这个bug该怎么改

liu_huasheng 2012-12-12 11:51:17
String __fastcall TForm1::getvalue(String strValue)//获得xml中的数据内容
{
_di_IXMLDocument XMLDoc;
XMLDoc = NewXMLDocument();
XMLDoc->LoadFromFile((WideString)"D:\\Request.xml"); //载入xml文件
XMLDoc->Active=true;
_di_IXMLNode node=XMLDoc->DocumentElement;//根节点
_di_IXMLNodeList nodes=node->ChildNodes;//子节点
for(int n=0;n<nodes->Count;n++)
{
for(int j = 0; j < nodes->Nodes[n]->ChildNodes->Count; j++)
{
String strValue = nodes->Nodes[n]->ChildNodes->Nodes[j]->NodeValue;
String strName = nodes->Nodes[n]->ChildNodes->Nodes[j]->NodeName;
list->Add(strName + "=" + strValue);
}
}ShowMessage(list->Values[Edit1->Text]);
return strValue;
}
这个代码发现一个bug,比如下面的这个xml文件,有两个<Name>但是不在同一层的时候,会报错
“Element does not contain a single text node”,请问该怎么解决?求代码
<Request>
<Name>
<SendAppBill>
<CardNo>001</CardNo>
<Name>张三</Name>
<Age>56</Age>
<SendAppBill>
</Name>
<Request>
...全文
174 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangxuyu1118 2013-08-01
  • 打赏
  • 举报
回复
碰到了同样的问题。怎样才能返回期望中的 “<CardNo>001</CardNo> <Name>张三</Name> <Age>56</Age> ” 呢
liu_huasheng 2012-12-13
  • 打赏
  • 举报
回复
引用 5 楼 Ring_Pt 的回复:
<Request> <SendAppBill> <CardNo>001</CardNo> <Name>张三</Name> <Age>56</Age> </SendAppBill> </Request> 这段是你原先的xml
嗯,谢谢,后面的那个只是随便举个例子,我当然不想每次读取不同的xml文件中的值的时都要修改代码,希望通用的代码方便调用。 比如说用递归方法:一个递归函数,首先读xml的第一个节点,判断它有没有子节点,若没有,读取节点名和值;若有,调用递归函数读下面的节点... 这种方法有没有问题?递归的参数以及出口是什么呢?求大大们给些意见或例子,十分感谢
Jim@luckeeinc.com 2012-12-13
  • 打赏
  • 举报
回复
<Request> <SendAppBill> <CardNo>001</CardNo> <Name>张三</Name> <Age>56</Age> </SendAppBill> </Request> 这段是你原先的xml <Request> <Name> <SendAppBill> <CardNo>001</CardNo> <Name>张三</Name> <Age>56</Age> </SendAppBill> </Name> </Request> 这段是你现在的xml 我写的示例代码是针对你第一段xml写的 只是告诉你要怎么做 不具有通用性 后面的怎么写参考第一种情况不就可以了
liu_huasheng 2012-12-13
  • 打赏
  • 举报
回复
引用 2 楼 songhtao 的回复:
这段代码有问题,应该用递归,遍历节点
不知道该怎么写,能给个示例吗
我不懂电脑 2012-12-12
  • 打赏
  • 举报
回复
这段代码有问题,应该用递归,遍历节点
Jim@luckeeinc.com 2012-12-12
  • 打赏
  • 举报
回复
这个不是程序的bug 是你没理解那段程序 问题不在于有几个Name 而是因为你现在的xml和之前的xml层数不一样了
liu_huasheng 2012-12-12
  • 打赏
  • 举报
回复
引用 1 楼 Ring_Pt 的回复:
这个不是程序的bug 是你没理解那段程序 问题不在于有几个Name 而是因为你现在的xml和之前的xml层数不一样了
层数不一样就不能读取文件内容了吗,不太懂

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧