易截截图软件、单文件、免安装、纯绿色、仅160KB

XML文档分割成小块

XML文档分割成小块
 
当你要把XML文档分割成小块时,你要读取输入文档,创建输出文档和转换子文档。不管是在C++还是FOAL中的脚本中,CMarkup都使它变得简单。对于很大的XML文档,在提取子文档是使用CMarkup读取文件模式就可用很少的内存读取它。
关键问题是,当你分割XML文档时你想在那个地方分割?可以是一个合乎逻辑的根目录划分成子文档,也可以简单的按照文件大小来划分,就像把一个ten million大小的对象划分成one million大小的。
下面的C++代码是把一个包含N million个对象的XML文档分割成N个包含1 million个对象的文件。
这是程序的思想:
· 声明两个Cmarkup类的对象,一个是要被分割的输入文档,一个是输出文档
· 在循环读取所有对象时先打开那个巨大的输入文档
· 使用输出文档数形式的文件名打开一个输出文档
· 把输入文档的对象子文档转化成输出文档,直到对象计数达到最大值
· 关闭输出文档,重置对象计数器,输出文档计数器++
· 如果还没有达到输入文档的结尾,像上面得方法那样打开一个新的输出文档
· 达到了输入文档的结尾,跳出循环,关闭输出文档,关闭输入文档
 
// Split XML
CMarkup xmlInput, xmlOutput;
xmlInput.Open( "please_split.xml", MDF_READFILE );
int nObjectCount = 0, nFileCount = 0;
while ( xmlInput.FindElem("//object") )
{
  if ( nObjectCount == 0 )
  {
    ++nFileCount;
    xmlOutput.Open( "piece" + StrfromInt(nFileCount) + ".xml", MDF_WRITEFILE );
    xmlOutput.AddElem( "root" );
    xmlOutput.IntoElem();
  }
  xmlOutput.AddSubDoc( xmlInput.GetSubDoc() );
  ++nObjectCount;
  if ( nObjectCount == 1000000 )
  {
    xmlOutput.Close();
    nObjectCount = 0;
  }
}
if ( nObjectCount )
  xmlOutput.Close();
xmlInput.Close();
 
你也可以使用大小而不是对象的计数来作为分割XML文档的标志。要做到这一点,保持一个文档大小相符的文档(输出文档),直到达到阈值。上面程序的子文档转换发生在这一句xmlOutput.AddSubDoc( xmlInput.GetSubDoc() ).
你可以用两步替代,并跟踪大小:
MCD_STR sObject = xmlInput.GetSubDo


相关文档:

XML over TCP

如果要完整的支持XML over TCP,只有两种办法:
1,加一个header去标明数据的长度
2,加一个delimiter去标明数据的结束
这两种方法都不够优雅。我们不需要一个通用的方法,我们只要一个最适合我们的方法。
通常,我们能够自定义数据的格式,而且我们通常一条消息只有一个root node,那么我们可以试试下面的函数:
//re ......

C#读写xml文件

已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
  &nb ......

XML不区分大小写查询

按照名为"mydomain1.com"的 DomainName
属性对以下 XML 数据执行不区分大小写的搜索
<?xml version="1.0" ?>
<Domains>
<DomainName>Mydomain1.COM</DomainName>
</Domains>
MSXML 3.0 中 translate
的语法如下:
oXML.setProperty "SelectionLanguage&q ......

TXMLDocument对XML文件进行读取和写入 (bcb)

动态创建TXMLDocument对XML文件进行读取和写入 - [Delphi高级应用]
2008-01-16
Tag:Delphi XML XMLDocument
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://overblue.blogbus.com/logs/13954596.html
uses
  XMLDoc, XMLIntf;
{ 写入XML内容 }
var
  XMLDoc : TXMLDocumen ......

NET面试题 – 组件开发人员 & XML开发人员

C#组件开发人员
什么时候使用override?什么时候使用new? 什么叫shadowing?
重写父类的方法的时候用override以实现多态,当你想屏蔽父类成员的时候使用new,shadowing基本就是new与override区别等一些方面的问题,个人认为弄清override与new就没有必要特意考虑shadowing。
解释virtual、sealed、override和abstract的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号