bcb如何对xml的语法进行校验啊?

hslx_ 2013-04-26 08:51:37
我通过bcb抓取网页的信息页面,其中用户名一栏有的时候会出现<>,这个时候就会造成xml的语法不正确,程序就无法进行下去,请问有什么方法可以解决这个问题吗?
<?xml version='1.0' encoding='GBK'?>
<DTHOUSE>
<USER>KSUSER1<NJ> </USER>
<TEMP>1270 </TEMP>
<HUMI>30 </HUMI>
</DTHOUSE>


在读取USER时,由于USER里因为有<NJ>,由于其没有与之对应的</>,所以读取xml就会出错了,有没有什么方法可以解决这个问题啊?
...全文
111 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hslx_ 2013-04-26
  • 打赏
  • 举报
回复
数据是别人的,不是自己的数据。所以没有办法控制,现在只有用土办法,pos+substring来定位截取后替换了。 如果可以判断XML的语法正确于否,索性我就跳过这个记录了。
缘中人 2013-04-26
  • 打赏
  • 举报
回复
存储的时候能不能直接替换了 这种特殊字符的话,最好是按照下方的几个字符进行替换。(为什么这样说?看上边的两点问题) < < 小于号 > > 大于号 & & 和 ' ' 单引号 " " 双引号
hslx_ 2013-04-26
  • 打赏
  • 举报
回复
直接替换或删除单个是可以,但稳定性还是有点差,假如名字中包括多个<>怎么办? 比如 <USER>KSUSER1<<NJ> </USER>
缘中人 2013-04-26
  • 打赏
  • 举报
回复
那用StringList当做文本读取, str=list[2].Trim(); str.delete(1,)//删除第一个< str.pos("<");取到第二个<的位置, 然后截取处理, list[2]=str; 再保存成xml文件解析行不
hslx_ 2013-04-26
  • 打赏
  • 举报
回复
引用 3 楼 ksrsoft 的回复:
C/C++ code?1str= StringReplace(str, "<NJ>", "abc", TReplaceFlags() << rfReplaceAll);
如果只是固定的词我是知道的,但用户那边的是不固定的,有的时候是个ID号,有的时候是简称。所以很不确定。直接替换肯定是不行的。
缘中人 2013-04-26
  • 打赏
  • 举报
回复
str= StringReplace(str, "<NJ>", "abc", TReplaceFlags() << rfReplaceAll);
hslx_ 2013-04-26
  • 打赏
  • 举报
回复
关键这个词不是固定的,有的时候是<NJ>有的时候可能是<其它的任何内容>
缘中人 2013-04-26
  • 打赏
  • 举报
回复
<NJ>把他替换成一个字符串abc,解析完了再替换回来

13,825

社区成员

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

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