™.. XML_SPLIT - Online Linux Manual PageSection : 1
Updated : 2009-10-11
Source : perl v5.10.1
Note : User Contributed Perl Documentation

NAME​ xml_split − cut a big XML file into smaller chunks

DESCRIPTION\*(C`xml_split\*(C'\fR takes a (presumably big) \s-1XML\s0 file and split it in several smaller files. The memory used is the memory needed for the biggest chunk (ie memory is reused for each new chunk). It can split at a given level in the tree (the default, splits children of the root), or on a condition (using the subset of XPath understood by XML::Twig, so \*(C`section\*(C'\fR or \f(CW\*(C`/doc/section\*(C'\fR). Each generated file is replaced by a processing instruction that will allow ​\*(C`xml_merge\*(C'\fR to rebuild the original document. The processing instruction format is \*(C`<?merge subdocs=[01] :<filename> ?>\*(C'\fR File names are <file><nb>.xml, with <file>−00.xml holding the main document.

OPTIONS−l <level> level to cut at: 1 generates a file for each child of the root, 2 for each grand child defaults to 1 −c <condition> generate a file for each element that passes the condition xml_split −c <section> will put each \*(C`section\*(C'\fR element in its own file (nested sections are handled too) Note that at the moment this option is a lot slower than using \*(C`\-l\*(C'\fR −s <size> generates files of (approximately) <size>. The content of each file is enclosed in a new element (\*(C`xml_split::root\*(C'\fR), so it's well-formed \s-1XML\s0. The size can be given in bytes, Kb, Mb or Gb. −g <nb> groups <nb> elements in a single file. The content of each file is enclosed in a new element (\*(C`xml_split::root\*(C'\fR), so it's well-formed \s-1XML\s0. −b <name> base name for the output, files will be named <base><nb><.ext> <nb> is a sequence number, see below \*(C`\-\-nb_digits\*(C'\fR <ext> is an extension, see below \*(C`\-\-extension\*(C'\fR defaults to the original file name (if available) or \*(C`out\*(C'\fR (if input comes from the standard input) −n <nb> number of digits in the sequence number for each file if more digits than <nb> are needed, then they are used: if \*(C`\-\-nb_digits 2\*(C'\fR is used and 112 files are generated they will be named \*(C`<file>\-01.xml\*(C'\fR to \f(CW\*(C`<file>\-112.xml\*(C'\fR defaults to 2 −e <ext> extension to use for generated files defaults to the original file extension or \*(C`.xml\*(C'\fR −i use XInclude elements instead of Processing Instructions to mark where sub files need to be included −v verbose output Note that this option can slow down processing considerably (by an order of magnitude) when generating lots of small documents −V outputs version and exit −h short help −m man (requires pod2text to be in the path)

EXAMPLES​ xml_split foo.xml # split at level 1 ​ xml_split −l 2 foo.xml # split at level 2 ​ xml_split −c section foo.xml # a file is generated for each section element ​ # nested sections are split properly

SEE ALSOXML::Twig, xml_merge

TODOoptimize the code any idea welcome! I have already implemented most of what I thought would improve performances. provide other methods that PIs to keep merge information XInclude is a good candidate (alpha support added in 0.04). using entities, which would seem the natural way to do it, doesn't work, as they make it impossible to have both the main document and the sub docs to be well-formed if the sub docs include sub-sub docs (you can't have entity declarations in an entity)

AUTHORMichel Rodriguez <mirod@cpan.org>

LICENSEThis tool is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
0
Johanes Gumabo
Data Size   :   13,888 byte
man-xml_split.1Build   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   2 / 181,836
Visitor ID   :     :  
Visitor IP   :   18.119.19.251   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.

ERROR : Need New Coding :         (parse_manual_page_|249|xml_split.1|36/37|el══─{─══.|.el══─{─══. ds -- \|\(em\| )         (htmlprn|149|xml_split.1|36/37|.el══─{─══. ds --  —  |.el══─{─══. ds -- \|\(em\| )         (parse_manual_page_|249|xml_split.1|41|br══─}─══|'br══─}─══ )         (htmlprn|149|xml_split.1|41|'br══─}─══ |'br══─}─══ )         (rof_nr_x|149|xml_split.1|51/52|\nF|.ie \nF ══─{─══. de IX )         (rof_unit_scale_px|41|xml_split.1|51/52|F|.ie \nF ══─{─══. de IX )         (rof_if|19|xml_split.1|51/52|\nF|.ie \nF ══─{─══. de IX )         (htmlprn|149|xml_split.1|51/52|.ie \nF ══─{─══. de IX|.ie \nF ══─{─══. de IX )         (rof_escape_sequence|91|xml_split.1|53|\$1\t\\n%\t"\\$2" |. tm Index:\\$1\t\\n%\t"\\$2" )         (parse_manual_page_|249|xml_split.1|57|══─}─══|.══─}─══ )         (htmlprn|149|xml_split.1|57|.══─}─══ |.══─}─══ )         (rof_escape_sequence|91|xml_split.1|138|\*(C`xml_split\*(C'\fR takes a (presumably big) \s-1XML\s0 file and split it in several smaller |\&\f(CW\*(C`xml_split\*(C'\fR takes a (presumably big) \s-1XML\s0 file and split it in several smaller )         (rof_escape_sequence|91|xml_split.1|144|\*(C`section\*(C'\fR or \f(CW\*(C`/doc/section\*(C'\fR). |of XPath understood by XML::Twig, so \f(CW\*(C`section\*(C'\fR or \f(CW\*(C`/doc/section\*(C'\fR). )         (rof_escape_sequence|91|xml_split.1|147|\*(C`xml_merge\*(C'\fR to rebuild the original document. The processing instruction |\&\f(CW\*(C`xml_merge\*(C'\fR to rebuild the original document. The processing instruction )         (rof_escape_sequence|91|xml_split.1|148|\*(C` ?>\*(C'\fR |format is \f(CW\*(C` ?>\*(C'\fR )         (rof_escape_sequence|91|xml_split.1|163|\*(C`section\*(C'\fR element in its own file (nested |xml_split \-c
will put each \f(CW\*(C`section\*(C'\fR element in its own file (nested )         (rof_escape_sequence|91|xml_split.1|166|\*(C`\-l\*(C'\fR |Note that at the moment this option is a lot slower than using \f(CW\*(C`\-l\*(C'\fR )         (rof_escape_sequence|91|xml_split.1|170|\*(C`xml_split::root\*(C'\fR), so it's well-formed \s-1XML\s0. |enclosed in a new element (\f(CW\*(C`xml_split::root\*(C'\fR), so it's well-formed \s-1XML\s0. )         (rof_escape_sequence|91|xml_split.1|175|\*(C`xml_split::root\*(C'\fR), so it's well-formed \s-1XML\s0. |enclosed in a new element (\f(CW\*(C`xml_split::root\*(C'\fR), so it's well-formed \s-1XML\s0. )         (rof_escape_sequence|91|xml_split.1|180|\*(C`\-\-nb_digits\*(C'\fR | is a sequence number, see below \f(CW\*(C`\-\-nb_digits\*(C'\fR )         (rof_escape_sequence|91|xml_split.1|181|\*(C`\-\-extension\*(C'\fR | is an extension, see below \f(CW\*(C`\-\-extension\*(C'\fR )         (rof_escape_sequence|91|xml_split.1|183|\*(C`out\*(C'\fR (if input comes |defaults to the original file name (if available) or \f(CW\*(C`out\*(C'\fR (if input comes )         (rof_escape_sequence|91|xml_split.1|189|\*(C`\-\-nb_digits 2\*(C'\fR is used |if more digits than are needed, then they are used: if \f(CW\*(C`\-\-nb_digits 2\*(C'\fR is used )         (rof_escape_sequence|91|xml_split.1|190|\*(C`\-01.xml\*(C'\fR to \f(CW\*(C`\-112.xml\*(C'\fR |and 112 files are generated they will be named \f(CW\*(C`\-01.xml\*(C'\fR to \f(CW\*(C`\-112.xml\*(C'\fR )         (rof_escape_sequence|91|xml_split.1|197|\*(C`.xml\*(C'\fR |defaults to the original file extension or \f(CW\*(C`.xml\*(C'\fR )