掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 5487|回复: 19

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

[复制链接]

该用户从未签到

发表于 2013-11-24 17:50:00 | 显示全部楼层 |阅读模式
本帖最后由 hyln9 于 2013-11-24 22:55 编辑 $ N" j  K* H; O+ n/ f9 _
! G4 L# x) B; ^
之前打算制作英文维基20131104(https://www.pdawiki.com/forum/thread-11455-1-1.html),47.2GB的xml实在是让我无语,后来在o大的指导下找见了不错的replace pioneer,但是分割处理这么大的文件依然不给力。几经周折,找见了这款鲜为人知但是功能极为强大的xml分割工具,可以分割我的47.2gb的xml。售价貌似99刀,我只是想试用一下,没想到有1gb限制,所以自编程序怒破解之,分享给大家,但是仅限私下使用哦
2 I9 [3 c/ R+ _5 v& e3 F$ h
3 v( l0 D2 F: D1 d5 V. \此软件为英文,但是功能确实很强大,截几张图给大家吧:# E9 \! l, _5 X' Q

+ G. h# o% Q# y# r. K* @/ T
! B2 ^1 e8 ^. V3 R# L! Y
( {7 f! L- p7 W5 ~
# S; Y& R  L& E% G9 _/ E; d$ ?/ [9 w! M) g

% a( ~5 a& f5 S% q
9 [8 o  H4 x5 U/ Bps:不知道为什么i-wiki大大的引擎出了什么问题,无法转换。问题是我随便转了某个较小的外语xml成功,转换这个却失败,悲催啊,求教 所以先放出这个工具给大家带来点方便。
0 ^! J- `! P$ y2 D4 W
& |; L5 D- B+ ?8 O2 Y1 f. A破解方法:先安装程序。之后把XmlSplit_Crack.exe改名为XmlSplit.exe放入程序文件夹内覆盖原文件(源文件必须备份),运行程序,随便输XXX就注册成功了,然后恢复原来的XmlSplit.exe即可。天杀的360竟然报毒!请关闭360,注册完以后就可以打开360了。/ g1 @  b+ n, l8 _. L: q3 H1 }

0 q4 Q# c" Q, T9 M& m% B9 B( Shttp://pan.baidu.com/s/1eQoIY
4 F" J- `3 r3 ?4 s( ?/ V' ~' I密码pqw42 t4 q3 w! F& N7 }7 v: O$ m
" [3 H+ l/ r/ n! [

该用户从未签到

 楼主| 发表于 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 6 r& e2 ~; K. N" p- h
关于图片显示,论坛有bug,我是先把图片上传到相册(你看我https://pdawiki.com/forum/space-uid-147948.htm ...
/ u/ t5 s* X- v; s
我说是怎么回事,谢谢了!
  • 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 2 @' m! l: v" w6 o4 w" }
    可以试试superfan89的引擎,转出效果应该和aard一样,不过我没试过。
    1 x  K9 J9 ?5 |  x
    谢谢,我试试!不过aard是什么?

    该用户从未签到

     楼主| 发表于 2013-11-24 23:08:59 | 显示全部楼层
    本帖最后由 hyln9 于 2013-11-24 23:16 编辑 9 ^1 p$ c: T- y; `+ u& Q
    hyln9 发表于 2013-11-24 23:05
    ' i1 O- C; o" q' A谢谢,我试试!不过aard是什么?

    7 {: Z" ?- Z; k2 p* u$ w9 b4 p7 l! |+ U4 q
    哦,aard查到了,比我现在用的好啊!我现在用fastwiki和kiwix,前者有公式制作工具不过排版一般,后这简直是完美的无图wiki,但是英文版太大了只更新到了2012年,中文有2013的,不过有mdict版的了,也就不用了。
    ' V& `6 Q9 O. F0 y- ^, w
    0 D$ v* z9 m, `4 [) m3 x2 E! [: v现在没有linux环境,看来得过一段时间再说了。另外期待唯吾无为老大的新引擎!

    该用户从未签到

    发表于 2013-11-25 01:37:03 | 显示全部楼层
    lz可以寫破解的程式?!
    3 O/ v9 ^* x5 L3 T那怎麼沒試試寫解析的引擎?!

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2013-11-25 17:20:44 | 显示全部楼层
    STFU 发表于 2013-11-25 01:37
    5 S6 g! b/ g$ y7 [& Glz可以寫破解的程式?!
    7 e6 h2 r. J9 s$ u9 A; R那怎麼沒試試寫解析的引擎?!
    . W* s/ L- J3 ^  `% e- f
    引擎太复杂,我又没时间其实这个程序破解起来还是比较容易的,我就是把它的验证给替换了一下而已。

    该用户从未签到

     楼主| 发表于 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. '''$ L: w1 k# B3 Y9 v
    2. Based on xmllarge.py4 ~$ c* k/ @% G* W" Z8 Y! y
    3. '''
      ' A% G8 h/ u0 E7 e$ B( s
    4. # from pyquery import PyQuery as pq
      + R5 u( c5 r3 B2 r7 P* U
    5. from pathlib import Path! f, [) L- i* N

    6. ! c, @  T8 |* Z5 q' F
    7. ! b8 F! \1 y4 I  @! F
    8. def xml_iter(file, tag):
      % ^9 e/ N' Z' e9 S+ l  z4 Y- Z( z' t
    9.     '''7 ~5 r( w( Q7 J" S
    10.     Process huge xml files! f+ ?5 n: c) q; f2 A; U
    11.     <tag> </tag> need to be in separate lines" u8 c% J( V( ^4 {' a* }
    12.     # TODO: in the middle of lines: n- v+ L5 k; k; _; T

    13. 7 v9 B6 ?# r3 i  s, L
    14.     :file: file path
      $ F- }! W$ O- s2 I4 o; v
    15.     :tag: element to retrieve
      # _0 D8 h* Q7 f0 L
    16.     '''. a0 c  t. {. h4 X
    17.     tagb1 = '<' + tag + '>': Y/ ?# ^% O& X( M; b. ~
    18.     tagb1 = tagb1.encode()7 K! k# [9 b& H7 `

    19. 0 M% f# D! W( N% q

    20. & T6 h; d. M, W- w: C, t+ Y
    21.     tagb2 = '<' + tag + ' '
      0 w0 J& _7 g* e: G0 o- i
    22.     tagb2 = tagb2.encode()
      & v$ f% b# A# L* M7 ^
    23. " j, ~0 j4 Z2 @3 e
    24.     tagb3 = '</' + tag + '>'2 {; @% h1 g' I7 Z0 b$ \" r
    25.     tagb3 = tagb3.encode()( h7 A2 ?- Z- t8 K* {, k# \, A
    26. $ x) O3 Y8 ~7 R: V8 Z6 D
    27.     with open(file, 'rb') as inputfile:
      ' e$ r( W2 }3 _; T5 A' u* X4 Y4 i
    28.         append = False
      , C+ R+ J* g, C
    29.         for line in inputfile:
      7 _* _( h! g0 s1 ]' c
    30.             #~ if b'<tu>' in line or b'<tu ' in line:
      7 F  R! r4 i7 ]; `+ b
    31.             if tagb1 in line:
        d! [: L2 J! S7 Z6 o
    32.                 inputbuffer = line[line.index(tagb1):]
      3 ]$ b. k9 c2 D' _
    33.                 append = True
      4 {$ N+ R8 _2 J/ b3 ~9 z7 J9 {- t
    34.             elif  tagb2 in line:
      + C$ N* ^) @/ ~: D  l4 d) c6 d! {4 B
    35.                 inputbuffer = line[line.index(tagb2):]5 e* z$ t9 w; g( f- h
    36.                 append = True
      $ K2 T' c; S& Y# v8 U/ Y7 ~
    37.             #~ elif b'</tu>' in line:
      ( X. e* q4 Y, J) x& D" B3 M! t
    38.             elif tagb3 in line:6 S7 L+ P* T8 I  ~
    39.                 inputbuffer += line[:line.index(tagb3) + len(tagb3)]+ n* C4 c6 f: |3 D0 u, g1 l
    40.                 append = False
      3 E; C- F" }- z+ Q2 Z
    41.                 yield inputbuffer
      & i) J( J9 K) p" e' b: N
    42.                 #~ docitem = process_buffer(inputbuffer, id_num)5 y9 y" r7 k/ P: H* C: U% Y
    43.                 #~ print(id_num), `3 t( ^% w& X2 v4 |; j
    44.                 #~ id_num += 1
      9 D6 G% Q3 K: u% x4 I
    45.                 inputbuffer = b''/ p/ L$ p) ~1 y2 l; _% B
    46.             elif append:6 A0 e7 L- e5 V: V0 X  z4 x. x# l
    47.                 inputbuffer += line
    复制代码

    . Z$ G# I$ `6 b- ]& S! R; K$ b" f* u) w' e! O
    这么多人找这东西?我过一阵打包发个小工具。
    8 b5 Y/ \. y- f7 H! D! F. X8 p
    8 p/ x8 j. e0 p( m+ ~- A上面的python3函数用法
    : m2 ?" H! ]( i: S) E2 [! fresu = ''
    ! Z' M' }9 p# W4 W+ [$ Kfor elm in xml_iter(filename, 'tu'):; I# u* j+ i* C
        resu += elm- X* W! X+ O5 p6 F  ]5 }

    # N: w0 c" T! g& z( @* h内存足迹极小……不管文件多大。
  • 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
    # S  X6 v; m' s" y% I  }1 K) L这么多人找这东西?我过一阵打包发个小工具。
    ( C& {5 j# R; \  d
    6 ?6 A" K( b* N上面的python3函数用法

    6 Q5 \  Q2 Z' n就喜欢这种一言不合自己写工具的,后面看看你的代码
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-7-9 17:43 , Processed in 0.025746 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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