掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5359|回复: 19

[工具] 分割xml/html等文件必备:xmlsplit

[复制链接]

该用户从未签到

发表于 2013-11-24 17:50:00 | 显示全部楼层 |阅读模式
本帖最后由 hyln9 于 2013-11-24 22:55 编辑 0 z+ R; m0 o" x( U; \7 _

2 _. Z+ @# }5 `& w: l  [( @之前打算制作英文维基20131104(https://www.pdawiki.com/forum/thread-11455-1-1.html),47.2GB的xml实在是让我无语,后来在o大的指导下找见了不错的replace pioneer,但是分割处理这么大的文件依然不给力。几经周折,找见了这款鲜为人知但是功能极为强大的xml分割工具,可以分割我的47.2gb的xml。售价貌似99刀,我只是想试用一下,没想到有1gb限制,所以自编程序怒破解之,分享给大家,但是仅限私下使用哦   q- I2 n9 f3 K
/ J- O2 N  H$ _6 O) ~& s9 g
此软件为英文,但是功能确实很强大,截几张图给大家吧:+ H7 \$ H) n) _% P: t& ?2 {/ `, u

& A  j4 U, A3 O! F$ B: J6 ^5 h4 }6 Y' o6 ?9 q0 W6 e- [' f8 X
0 _+ G2 c: P# F( G. F2 @. Y

- P# I2 E& ]( }3 h5 D% q5 l% c* p" P, g+ W: ]

* ~2 L: X" B8 A- w, a: s9 p; m( k) q; `0 a6 b8 _: L
ps:不知道为什么i-wiki大大的引擎出了什么问题,无法转换。问题是我随便转了某个较小的外语xml成功,转换这个却失败,悲催啊,求教 所以先放出这个工具给大家带来点方便。
( D+ d9 R* Z9 Z+ Y& X' L1 y
" E9 }& u( G' P9 d破解方法:先安装程序。之后把XmlSplit_Crack.exe改名为XmlSplit.exe放入程序文件夹内覆盖原文件(源文件必须备份),运行程序,随便输XXX就注册成功了,然后恢复原来的XmlSplit.exe即可。天杀的360竟然报毒!请关闭360,注册完以后就可以打开360了。
+ f5 \! \- E8 o* }' P/ @4 l$ H9 z8 L% l' j+ i( x  L  Z7 N0 v+ L
http://pan.baidu.com/s/1eQoIY
) g; Y. F7 N! o4 a8 Z密码pqw4# u" W+ Q' z( x5 @& {/ p
1 u: S  `" q, p1 ?+ I# i2 Y$ Y

该用户从未签到

 楼主| 发表于 2013-11-24 22:45:37 | 显示全部楼层
此楼备用

该用户从未签到

发表于 2013-11-24 22:50:06 | 显示全部楼层
关于图片显示,论坛有bug,我是先把图片上传到相册(你看我https://pdawiki.com/forum/space-uid-147948.html相册里都100+张图了),再从相册中选择图片插入,注意验证回答上方“本地化远程图片”前的复选框不要勾选!!!这样图片就能大大地显示出来了。{:5_227:}

该用户从未签到

 楼主| 发表于 2013-11-24 22:51:41 | 显示全部楼层
Oeasy 发表于 2013-11-24 22:50 % {5 s6 C- T; H8 A  i' T, P
关于图片显示,论坛有bug,我是先把图片上传到相册(你看我https://pdawiki.com/forum/space-uid-147948.htm ...

7 o# J) X8 G4 z7 V; v/ t我说是怎么回事,谢谢了!
  • TA的每日心情
    难过
    2018-3-28 11:32
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2013-11-24 22:55:32 | 显示全部楼层
    可以试试superfan89的引擎,转出效果应该和aard一样,不过我没试过。

    该用户从未签到

     楼主| 发表于 2013-11-24 23:05:42 | 显示全部楼层
    yisdict 发表于 2013-11-24 22:55
    7 s, M5 H  M/ @: n$ D9 C: l. G6 s可以试试superfan89的引擎,转出效果应该和aard一样,不过我没试过。

    * v4 k6 K: s8 U6 m/ x1 Z" h谢谢,我试试!不过aard是什么?

    该用户从未签到

     楼主| 发表于 2013-11-24 23:08:59 | 显示全部楼层
    本帖最后由 hyln9 于 2013-11-24 23:16 编辑 , y5 o* n8 x& \' y) |1 x& K
    hyln9 发表于 2013-11-24 23:05 ! B3 k! W# C% L
    谢谢,我试试!不过aard是什么?
    9 i3 L# I4 ~; E9 K3 A4 T

    * g/ l- U4 g+ u$ ^& `8 w哦,aard查到了,比我现在用的好啊!我现在用fastwiki和kiwix,前者有公式制作工具不过排版一般,后这简直是完美的无图wiki,但是英文版太大了只更新到了2012年,中文有2013的,不过有mdict版的了,也就不用了。
    / l3 T7 e# o( k" j- k: L2 f+ ^- u  h- t( V3 K
    现在没有linux环境,看来得过一段时间再说了。另外期待唯吾无为老大的新引擎!

    该用户从未签到

    发表于 2013-11-25 01:37:03 | 显示全部楼层
    lz可以寫破解的程式?!) y7 O1 N/ y+ \0 Y  @# H+ T
    那怎麼沒試試寫解析的引擎?!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x

    该用户从未签到

     楼主| 发表于 2013-11-25 17:20:44 | 显示全部楼层
    STFU 发表于 2013-11-25 01:37 ( C( o3 d  n$ M8 K3 O2 K
    lz可以寫破解的程式?!
    - {2 D: H* ~9 p, B* B8 K8 ~那怎麼沒試試寫解析的引擎?!

      E" o- d5 W( P3 `: I) Z' K4 w4 N: P5 n& E引擎太复杂,我又没时间其实这个程序破解起来还是比较容易的,我就是把它的验证给替换了一下而已。

    该用户从未签到

     楼主| 发表于 2013-12-3 18:52:58 | 显示全部楼层
    图片算是显示完整了
  • TA的每日心情
    开心
    2020-3-8 09:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2013-12-3 19:28:37 | 显示全部楼层
    凡是能够编写程序,我都100分的崇拜。
  • TA的每日心情
    无聊
    2018-8-12 17:26
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2014-12-29 13:56:42 | 显示全部楼层
    能不能再发分享一次,谢谢
  • TA的每日心情
    无聊
    2018-8-12 17:26
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2014-12-31 13:10:51 | 显示全部楼层
    楼主能不能把那XMLSPLIT再给我分享一份,谢谢

    该用户从未签到

    发表于 2018-5-14 00:42:57 | 显示全部楼层
    求分享xmlsplit,打不开了。谢谢!
  • TA的每日心情
    奋斗
    2018-5-18 05:02
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2018-5-14 06:21:32 | 显示全部楼层
    请问楼主@hyln9能否重新分享一下你的百度盘链接?
  • TA的每日心情

    2024-3-13 15:54
  • 签到天数: 29 天

    [LV.4]偶尔看看III

    发表于 2018-11-16 20:03:31 | 显示全部楼层
    网盘链接已失效,能否再分享一次?
  • TA的每日心情
    开心
    2019-8-21 08:44
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2018-11-16 21:27:49 | 显示全部楼层
    1. '''1 V+ F9 w) z: i' f9 n
    2. Based on xmllarge.py- V% a8 U3 S! r  q0 `
    3. '''- t, q7 ~) L! _% X+ B' d
    4. # from pyquery import PyQuery as pq1 p! D9 U" I; H: ~
    5. from pathlib import Path
      3 \+ L9 r& k" b7 b8 w
    6. ; w# Y2 a0 e! N$ F9 R- k0 o& W- o2 d- i

    7. & g9 ~$ e9 P+ R: H" j1 c5 K
    8. def xml_iter(file, tag):9 i( }. k/ j' D  {- A6 d
    9.     '''
        L4 e& b8 q+ k' m
    10.     Process huge xml files
      1 @6 G" V: I5 ~: K9 ~
    11.     <tag> </tag> need to be in separate lines% V9 H* P5 e+ U& ^& N
    12.     # TODO: in the middle of lines  y' w) u% `& x, W9 e  w( b. ]
    13. , h# T. ^+ z. d! v: A* \6 l
    14.     :file: file path
      ; v/ v5 r; {9 o# l5 R' l
    15.     :tag: element to retrieve
      . R/ d- W- _, v- U- F8 O& c0 `
    16.     '''
      3 e; M# R/ n3 E7 P/ u
    17.     tagb1 = '<' + tag + '>'
      4 C- d' E4 Y/ Q* j/ e
    18.     tagb1 = tagb1.encode()! u% N0 j' s6 I- T' |

    19. 2 z; A- D" E) k% M
    20. ( w) t; q4 F/ ?0 r( k. p# A5 j
    21.     tagb2 = '<' + tag + ' '
      6 S; j4 n# j. B- i
    22.     tagb2 = tagb2.encode()- v( y3 \& _5 t

    23. 8 Z2 o/ j& H' ^* q" q2 w4 Q9 P2 \
    24.     tagb3 = '</' + tag + '>'
      . ^4 B2 ?5 c$ y- w: h; R1 z7 y
    25.     tagb3 = tagb3.encode()# r4 C) ^- z2 Y+ V
    26. 0 o3 U4 V3 P1 z. z2 O0 H8 S
    27.     with open(file, 'rb') as inputfile:6 j( [: g, G  n# W/ {& {( v. @
    28.         append = False
      & V* A3 P: C( i2 l* j
    29.         for line in inputfile:# W# z. P: B- @: Y6 U+ R
    30.             #~ if b'<tu>' in line or b'<tu ' in line:
      1 M+ O" j9 V  W" p
    31.             if tagb1 in line:. n. R/ @, [1 G( a
    32.                 inputbuffer = line[line.index(tagb1):]' h3 W8 h  H$ E0 I; F. D& i) A; ^
    33.                 append = True0 S: i5 |. w# A" A, }# y: @! x- m. s2 s
    34.             elif  tagb2 in line:% o! x7 W$ {- e2 v4 `1 E
    35.                 inputbuffer = line[line.index(tagb2):]
      ( C" g5 S3 X0 ]0 Q9 c1 t4 N5 r
    36.                 append = True
      8 K2 d& C# k8 ^& ?. J( X
    37.             #~ elif b'</tu>' in line:: y& s) b. z! r  z& T; ]
    38.             elif tagb3 in line:
      ! F" K" p: Z3 g" F, i7 d
    39.                 inputbuffer += line[:line.index(tagb3) + len(tagb3)]
      + A, ^& ~3 S/ n: ^: u: P
    40.                 append = False' `3 t. Z2 e% l: j
    41.                 yield inputbuffer
        @  P3 C9 R4 A) B- _6 x
    42.                 #~ docitem = process_buffer(inputbuffer, id_num)
      / ^( e8 j' U1 k$ p6 s7 N
    43.                 #~ print(id_num)5 Y: e( Q1 N" ]" D# u
    44.                 #~ id_num += 1
      ! e& Z4 q  r) u
    45.                 inputbuffer = b''
      2 v( ^: _" j- P* D5 v. X! o# ]
    46.             elif append:% y; A8 N; G/ F. P: l
    47.                 inputbuffer += line
    复制代码
    4 k3 F- S) U- o( U$ b, n$ |
    % ?0 E5 b, r$ V( m+ c; t4 @( W
    这么多人找这东西?我过一阵打包发个小工具。
    $ N  [/ y& \* v+ g; Q( l. B
    % u, [' t) w0 _上面的python3函数用法
    & O* r8 M; a* U! V0 o( Y6 X3 W6 Tresu = ''! j. [$ y' i& C2 u6 x0 ?- w, N
    for elm in xml_iter(filename, 'tu'):
    ( t0 @- z6 [% W# g    resu += elm
    9 T# s. z! v. H& [& W! {0 T" l; U' E! X9 o+ V# ]
    内存足迹极小……不管文件多大。
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-1-19 18:47:48 | 显示全部楼层
    这个工具链接失效了,可以再分享下么
  • TA的每日心情
    奋斗
    2019-4-14 02:12
  • 签到天数: 93 天

    [LV.6]常住居民II

    发表于 2019-1-19 18:48:19 | 显示全部楼层
    mikeee 发表于 2018-11-16 21:27  j0 ~! t& F& n4 o+ \
    这么多人找这东西?我过一阵打包发个小工具。  |$ `/ n. n3 L( a- m% c  A
    ; l0 Y% m5 s! D6 m" Q
    上面的python3函数用法

    4 v' A& y% \, _1 z& B/ q0 U, w# V就喜欢这种一言不合自己写工具的,后面看看你的代码
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-4-27 16:01 , Processed in 0.023679 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表