XMLÎĵµ·Ö¸î³ÉС¿é
XMLÎĵµ·Ö¸î³ÉС¿é
µ±ÄãÒª°ÑXMLÎĵµ·Ö¸î³ÉС¿éʱ£¬ÄãÒª¶ÁÈ¡ÊäÈëÎĵµ£¬´´½¨Êä³öÎĵµºÍת»»×ÓÎĵµ¡£²»¹ÜÊÇÔÚC++»¹ÊÇFOALÖеĽű¾ÖУ¬CMarkup¶¼Ê¹Ëü±äµÃ¼òµ¥¡£¶ÔÓںܴóµÄXMLÎĵµ£¬ÔÚÌáÈ¡×ÓÎĵµÊÇʹÓÃCMarkup¶ÁÈ¡Îļþģʽ¾Í¿ÉÓúÜÉÙµÄÄÚ´æ¶ÁÈ¡Ëü¡£
¹Ø¼üÎÊÌâÊÇ£¬µ±Äã·Ö¸îXMLÎĵµÊ±ÄãÏëÔÚÄǸöµØ·½·Ö¸î£¿¿ÉÒÔÊÇÒ»¸öºÏºõÂß¼µÄ¸ùĿ¼»®·Ö³É×ÓÎĵµ£¬Ò²¿ÉÒÔ¼òµ¥µÄ°´ÕÕÎļþ´óСÀ´»®·Ö£¬¾ÍÏñ°ÑÒ»¸öten million´óСµÄ¶ÔÏó»®·Ö³Éone million´óСµÄ¡£
ÏÂÃæµÄC++´úÂëÊÇ°ÑÒ»¸ö°üº¬N million¸ö¶ÔÏóµÄXMLÎĵµ·Ö¸î³ÉN¸ö°üº¬1 million¸ö¶ÔÏóµÄÎļþ¡£
ÕâÊdzÌÐòµÄ˼Ï룺
· ÉùÃ÷Á½¸ö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
Ïà¹ØÎĵµ£º
Á½ÖÖ·½·¨£º
ÆäÒ»£¬Ê¹Óà SelectNodes µÄ·½·¨£»ÒÔÏÂÀý×ÓΪʹÓô˷½·¨µÄ´¦Àí¡£
Æä¶þ£¬Ê¹Óà XQuery µÄ·½·¨¡£
''' <summary>
''' ´Ó XML ÎļþÖÐÈ¡µÃ¶ÔÓ¦ID µÄÓïÑÔÖµ
''' </summary>
''' <param name="textID">ÊäÈëµÄID< ......
Èç¹ûÒªÍêÕûµÄÖ§³ÖXML over TCP£¬Ö»ÓÐÁ½ÖÖ°ì·¨£º
1£¬¼ÓÒ»¸öheaderÈ¥±êÃ÷Êý¾ÝµÄ³¤¶È
2£¬¼ÓÒ»¸ödelimiterÈ¥±êÃ÷Êý¾ÝµÄ½áÊø
ÕâÁ½ÖÖ·½·¨¶¼²»¹»ÓÅÑÅ¡£ÎÒÃDz»ÐèÒªÒ»¸öͨÓõķ½·¨£¬ÎÒÃÇÖ»ÒªÒ»¸ö×îÊʺÏÎÒÃǵķ½·¨¡£
ͨ³££¬ÎÒÃÇÄܹ»×Ô¶¨ÒåÊý¾ÝµÄ¸ñʽ£¬¶øÇÒÎÒÃÇͨ³£Ò»ÌõÏûÏ¢Ö»ÓÐÒ»¸öroot node£¬ÄÇôÎÒÃÇ¿ÉÒÔÊÔÊÔÏÂÃæµÄº¯Êý£º
//re ......
XMLÊÇÒ»ÏîÈÈÃŵļ¼Êõ¡£ËüÖ®ËùÒÔÄܹ»ÒýÆðÈËÃǵÄÐËȤ£¬Ò»¸öÖ÷ÒªµÄÔÒòÔÚÓÚËüÊ®·ÖµÄ¼òµ¥£¬ÈËÃÇ¿ÉÒÔºÜÈÝÒ×µØÀí½âºÍʹÓÃËü¡£Ã¿Ò»¸ö³ÌÐòÔ±¶¼ÄÜÇáÒ׵ؿ´¶®Ò»¸öXMLÎļþ£¬Àí½âËü°üº¬µÄÄÚÈÝ¡£
.NETÖаüº¬Á˺ܶàÖ§³ÖXMLµÄÀ࣬ÕâЩÀàʹµÃ³ÌÐòԱʹÓÃXML±à³Ì¾ÍÈçͬÀí½âXMLÎļþÒ»Ñù¼òµ¥¡£ÔÚÕâƪÎÄÕÂÖУ¬ÎÒ½«¸ø³öÕâÑùµÄÒ»¸öÀàµÄʹÓÃʾÀý£¬Õ ......
ref : http://blog.csdn.net/High_Mount/archive/2008/09/19/2953335.aspx
תÒå×Ö·û
²»ºÏ·¨µÄXML×Ö·û±ØÐë±»Ì滻ΪÏàÓ¦µÄʵÌå¡£
Èç¹ûÔÚXMLÎĵµÖÐʹÓÃÀàËÆ"<" µÄ×Ö·û, ÄÇô½âÎöÆ÷½«»á³öÏÖ´íÎó£¬ÒòΪ½âÎöÆ÷»áÈÏΪÕâÊÇÒ»¸öÐÂÔªËصĿªÊ¼¡£ËùÒÔ²»Ó¦¸ÃÏóÏÂÃæÄÇÑùÊéд´úÂë:
<message>if salary < 1000 then</me ......
ÎÊÌâ:
¸ù¾Ýgoogle¹æ¶¨£¬ÔÚ¸ø×Ô¶¯¸øÍøÕ¾Éú³Ésitemap.xmlµÄʱºò£¬ ¸ø¸ù½áµã¼ÓÈçÏÂÊôÐÔʱ£¬Óöµ½ÁËÂé·³
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
Óúܶ෽·¨£¬ÏñaddAttribute, addNamespce¶¼²»ÐÐ
½â¾ö·½·¨£º
Document document = DocumentHelper.createDocument();
Element root = document.addEl ......