wxXmlDocument loadxml的替代方法

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
xiaxia179
In need of some credit
In need of some credit
Posts: 9
Joined: Mon Dec 01, 2014 9:41 am

wxXmlDocument loadxml的替代方法

Post by xiaxia179 » Mon Mar 02, 2015 2:55 am

wxXmlDocument 没有loadxml这个方法,有没有别的替代的方式?

ChunJiu
Knows some wx things
Knows some wx things
Posts: 35
Joined: Thu Jun 05, 2014 2:52 pm

Re: wxXmlDocument loadxml的替代方法

Post by ChunJiu » Tue Mar 17, 2015 6:59 pm

建议你使用tinyxml,wx的XML似乎没完善。

xiaxia179
In need of some credit
In need of some credit
Posts: 9
Joined: Mon Dec 01, 2014 9:41 am

Re: wxXmlDocument loadxml的替代方法

Post by xiaxia179 » Wed Mar 18, 2015 9:46 am

ChunJiu wrote:建议你使用tinyxml,wx的XML似乎没完善。
我后来查看了 wxXmlDocument 加载的文件的源代码,发现他是从输入流的每次读取1024个字节

然后我自己派生了wxXmlDocumentEX,按照它的方法,把从流读改成了从wxString 读,解决了这个问题,实现了loadxml

ChunJiu
Knows some wx things
Knows some wx things
Posts: 35
Joined: Thu Jun 05, 2014 2:52 pm

Re: wxXmlDocument loadxml的替代方法

Post by ChunJiu » Wed Mar 18, 2015 10:59 am

很棒!赞一个 =D>

xiaxia179
In need of some credit
In need of some credit
Posts: 9
Joined: Mon Dec 01, 2014 9:41 am

Re: wxXmlDocument loadxml的替代方法

Post by xiaxia179 » Thu Mar 19, 2015 5:42 am

ChunJiu wrote:很棒!赞一个 =D>
你没有试过把wxstring 作为输入流的源?

我对流不太熟,我的想法是如果把 wxstring当成输入流的源,就不用派生出来,直接把流传进去就行了

ChunJiu
Knows some wx things
Knows some wx things
Posts: 35
Joined: Thu Jun 05, 2014 2:52 pm

Re: wxXmlDocument loadxml的替代方法

Post by ChunJiu » Thu Mar 19, 2015 6:15 am

xiaxia179 wrote:
ChunJiu wrote:很棒!赞一个 =D>
你没有试过把wxstring 作为输入流的源?

我对流不太熟,我的想法是如果把 wxstring当成输入流的源,就不用派生出来,直接把流传进去就行了
因为 wxString 本身不是流,所以实现流的功能比较麻烦。
我对它们的使用还是流归流,字串归字串,因为它们的定义很清晰。
如果硬要混在一起,别人会对这些代码感觉很迷糊,包括你自己,哈哈!
因为我早期也是这么干的,最后不得不重新写这些代码。

xiaxia179
In need of some credit
In need of some credit
Posts: 9
Joined: Mon Dec 01, 2014 9:41 am

Re: wxXmlDocument loadxml的替代方法

Post by xiaxia179 » Mon Mar 23, 2015 1:59 am

ChunJiu wrote:
xiaxia179 wrote:
ChunJiu wrote:很棒!赞一个 =D>
你没有试过把wxstring 作为输入流的源?

我对流不太熟,我的想法是如果把 wxstring当成输入流的源,就不用派生出来,直接把流传进去就行了
因为 wxString 本身不是流,所以实现流的功能比较麻烦。
我对它们的使用还是流归流,字串归字串,因为它们的定义很清晰。
如果硬要混在一起,别人会对这些代码感觉很迷糊,包括你自己,哈哈!
因为我早期也是这么干的,最后不得不重新写这些代码。
我已经转到tinyxml了,我用wxxml 读取了一个有上千行的xml文件,发现只读到100多行的时候就报错了,用Loadxml的时候,发现读入数据一旦超过4096字节的时候,也报错了,不知道为什么,不管了,周末刚刚把项目用tinyxml重写了

ChunJiu
Knows some wx things
Knows some wx things
Posts: 35
Joined: Thu Jun 05, 2014 2:52 pm

Re: wxXmlDocument loadxml的替代方法

Post by ChunJiu » Mon Mar 23, 2015 5:20 am

xiaxia179 wrote:
我已经转到tinyxml了,我用wxxml 读取了一个有上千行的xml文件,发现只读到100多行的时候就报错了,用Loadxml的时候,发现读入数据一旦超过4096字节的时候,也报错了,不知道为什么,不管了,周末刚刚把项目用tinyxml重写了
我早期在使用 wxXML的时候发现它没有完善,所以就换了 tinyXML。

wxWidgets 在内部使用一个动态内存分配的技术,虽然在资源分配上比较实用,但有个问题就是会丢数据。

它在重置内存块大小时会偶尔丢掉后面几个字节......实际上就是发现内存块满了就将数据截断抛弃,然后分配一个更大的内存块。

所以我现在使用 wxWidgets 组件的时候,通常自己检查数据块大小,强行分配一个大的数据缓冲区,而不是默认的大小。

Post Reply