(求救~~)tinyxml读取xml的问题

xuwei__5720 2012-10-16 09:42:25
xml部分内容:

<plurals name="Nalbums">
<item quantity="one">1 album</item>
<item quantity="other"><xliff:g id="count">%d</xliff:g> albums</item>
</plurals>



请问下如何将<xliff:g id="count">%d</xliff:g> albums这一串完整的读取出来,有没有什么接口的?感觉上其实就是第二个item标签的内容,我用ValueStr()函数他只读取到xliff:g这个字串.



另外还有一个问题,现在有一个泰文的xml需要解析,但是解析出来的全是乱码,代码已经支持了中文俄文等的语言,可就是不支持泰文,请问如何解决????

字符转换代码如下(结果保存在wBuffer中):

const char* strBuffer = StringElem->FirstChild()->Value();
wchar_t wBuffer[10024];
wmemset(wBuffer, 0, 10024);
MultiByteToWideChar(CP_UTF8, 0, strBuffer, -1, wBuffer, 10024);


附:win7 x64 vs2008 使用unicode字符集
...全文
249 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuwei__5720 2012-10-22
  • 打赏
  • 举报
回复
真心不想就这么结贴的,没一个有用的回答!问题一自己搞定了,问题二泰文还是没办法,慢慢搞了
xuwei__5720 2012-10-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
你xml内容本身就不符合规范,传统的解析方式肯定费劲,你还想图省事,恐怕没有。
[/Quote]

这是Android系统里的字符串资源xml里的,在java里有个函数是getcontent就可以做到

只不过是现在用的不是java么,既然java能做到,C++没道理做不到的,看到你"恐怕"俩字,断定你肯定不知道有还是没有
许文君 2012-10-18
  • 打赏
  • 举报
回复
你xml内容本身就不符合规范,传统的解析方式肯定费劲,你还想图省事,恐怕没有。
xuwei__5720 2012-10-18
  • 打赏
  • 举报
回复
这个要顶上去啊~~在来人帮帮我~~~
许文君 2012-10-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 9 楼 的回复:
你xml内容本身就不符合规范,传统的解析方式肯定费劲,你还想图省事,恐怕没有。


这是Android系统里的字符串资源xml里的,在java里有个函数是getcontent就可以做到

只不过是现在用的不是java么,既然java能做到,C++没道理做不到的,看到你"恐怕"俩字,断定你肯定不知道有还是没有
[/Quote]
确实不知道,因为我一般遇到这种情况都只能是解析出来然后拼接。常见的代码也没见到能一步做到这样的,都得自己再封装。
看不见的裂痕 2012-10-17
  • 打赏
  • 举报
回复
1.我都用GetNextElement和GetElementValue来读取内容的
应该找到quantity之后,使用GetFistChildElement来转换

2.
#include “atlconv.h”
USES_CONVERSION

A2W 等于MultiByteToWideChar
W2A 反过来

这个宏方便。用过就知道
zhanshen2891 2012-10-17
  • 打赏
  • 举报
回复
你这个不符合XML规范吧,只能是tag下包含tag或者值,不能两者共存吧。想实现你这种,可以在tag上加属性就好了,然后读属性。

xuwei__5720 2012-10-17
  • 打赏
  • 举报
回复
没有人知道么?
xuwei__5720 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

const char* strBuffer = StringElem->FirstChild()->Value();得到的是xliff:g?
那么StringElem->FirstChild()->FirstChild()->Value();应该就是%d了
最后再把属性读出来,自己拼接在一起
[/Quote]

我就是不想这么拼接了,这样得保存很多信息量,还要保存到excel里,到时候从excel里解析的时候也麻烦
sj720618 2012-10-17
  • 打赏
  • 举报
回复
const char* strBuffer = StringElem->FirstChild()->Value();得到的是xliff:g?
那么StringElem->FirstChild()->FirstChild()->Value();应该就是%d了
最后再把属性读出来,自己拼接在一起
xuwei__5720 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你这个不符合XML规范吧,只能是tag下包含tag或者值,不能两者共存吧。想实现你这种,可以在tag上加属性就好了,然后读属性。
[/Quote]

这个字串是Android应用里边string.xml的一个片段,现在要做的是将所有string读取出来写到excel里,目前碰到这种类型的tag,真心不想再读id加value了,到时候解析excel太麻烦了,所以想整串读取
xuwei__5720 2012-10-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

1.我都用GetNextElement和GetElementValue来读取内容的
应该找到quantity之后,使用GetFistChildElement来转换

2.
#include “atlconv.h”
USES_CONVERSION

A2W 等于MultiByteToWideChar
W2A 反过来

这个宏方便。用过就知道
[/Quote]

1.我看了下在TiXmlElement和TiXmlNode下并没有GetElementValue这个函数,GetFistChildElement这个获取出来应该不是<xliff:g id="count">%d</xliff:g> albums吧.

2.我改用A2W试了一下,得到的中文是乱码.

3,056

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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