V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
thinkIn
V2EX  ›  问与答

有会 tinyXML 的吗?求助汉字查找的问题

  •  
  •   thinkIn · 2018-09-08 16:24:06 +08:00 · 740 次点击
    这是一个创建于 1358 天前的主题,其中的信息可能已经有所发展或是发生改变。

    xml 有如下信息:

    <p align="0">
    <span type="fixedtext" name="现病史" level="二级" print="True" fontsize="10.5" showborder="False" fontname="宋体" creator="88">
    患者自诉正常。。。。。。。。。。。。收入院
    </span>
    <eof/>
    </p>
    

    现在想根据元素属性值 "现病史" 来定位这个元素,可是用 strcmp 来比较这三个汉字没有用,比较另一个属性值是英文的却可以,比如 "fixedtext"。

    我的代码:

    	while (l_pTarget) {
    		TiXmlElement *pTmp = l_pTarget->FirstChildElement();
    		for (; pTmp != NULL; pTmp = pTmp->NextSiblingElement()) {
    			int flag = 0;
    			TiXmlAttribute *pAttr = pTmp->FirstAttribute();
    			for (; pAttr != NULL; pAttr = pAttr->Next()) {
    				if (strcmp(pAttr->Value(), "现病史") == 0) {
    					flag = 1;
    					break;
    				}
    			}
    			if (flag && pTmp->GetText() != NULL)
    				file.Write(pTmp->GetText(), strlen(pTmp->GetText()));
    		}
    		l_pTarget = l_pTarget->NextSiblingElement("p");
    	}
    

    我尝试打开 xml 时设置 utf-8,也没用。先谢谢大家了!

    第 1 条附言  ·  2018-09-08 17:50:03 +08:00
    暂时硬编码了
    char str[] = {'\xe7','\x8e','\xb0','\xe7','\x97','\x85','\xe5','\x8f','\xb2','\x00'};//"现病史"

    大家有什么好的方法吗?
    3 条回复    2018-09-08 18:55:02 +08:00
    XinLake
        1
    XinLake  
       2018-09-08 18:22:16 +08:00
    你把查找数据写死在了源码文件里,看你源码文件的 encode 和 XML 文件的 encode 要一样。

    TinyXML 不能直接访问名称为“ name ” 的属性值不?第二层 for 好像可以不要吧。
    thinkIn
        2
    thinkIn  
    OP
       2018-09-08 18:52:39 +08:00
    @XinLake 可以访问名称为“ name ” 的属性值,就是编码有问题。第二层 for 需要的,遍历属性找到 name 的值。
    thinkIn
        3
    thinkIn  
    OP
       2018-09-08 18:55:02 +08:00
    @XinLake >源码文件的 encode 和 XML 文件的 encode 要一样。
    应该就是这个问题了,非常感谢!
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2437 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:42 · PVG 13:42 · LAX 22:42 · JFK 01:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.