掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 4835|回复: 19

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

[复制链接]

该用户从未签到

发表于 2013-11-24 17:50:00 | 显示全部楼层 |阅读模式
本帖最后由 hyln9 于 2013-11-24 22:55 编辑
( P8 y9 J6 h! P- {9 }
( Q" u$ X2 p: \+ i7 i# T之前打算制作英文维基20131104(https://www.pdawiki.com/forum/thread-11455-1-1.html),47.2GB的xml实在是让我无语,后来在o大的指导下找见了不错的replace pioneer,但是分割处理这么大的文件依然不给力。几经周折,找见了这款鲜为人知但是功能极为强大的xml分割工具,可以分割我的47.2gb的xml。售价貌似99刀,我只是想试用一下,没想到有1gb限制,所以自编程序怒破解之,分享给大家,但是仅限私下使用哦
9 `, j) _6 f( [7 A3 K$ @1 l
1 ~8 P: w# H0 K: Q此软件为英文,但是功能确实很强大,截几张图给大家吧:
: p6 P1 Y4 \  o, V& `, Y/ {6 Z; q* B
& c+ `1 ?4 ^+ F& W
- Z: _9 o$ n' T2 x* y% i
! C$ h7 r/ R: s' x% k6 s

1 V: p. h8 x% R( c& j/ R' ^
5 w% h, J2 Z9 o% @, o7 [
4 \2 D" k. }# J- Z- t$ Xps:不知道为什么i-wiki大大的引擎出了什么问题,无法转换。问题是我随便转了某个较小的外语xml成功,转换这个却失败,悲催啊,求教 所以先放出这个工具给大家带来点方便。! a+ v2 \, a1 t/ e- D2 Y

  @; S- M# J8 T破解方法:先安装程序。之后把XmlSplit_Crack.exe改名为XmlSplit.exe放入程序文件夹内覆盖原文件(源文件必须备份),运行程序,随便输XXX就注册成功了,然后恢复原来的XmlSplit.exe即可。天杀的360竟然报毒!请关闭360,注册完以后就可以打开360了。
5 g0 }1 |- s1 e: o
$ q" w3 m* _7 V7 W) shttp://pan.baidu.com/s/1eQoIY
1 Y7 j6 ~9 h" @" t/ g密码pqw4
8 C$ O* z8 q0 @9 c# j! h$ M: s$ j. _6 g' S& K* ^% ?8 k, o( I4 x

该用户从未签到

 楼主| 发表于 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
' |% H, F, M: U$ ]& C" V关于图片显示,论坛有bug,我是先把图片上传到相册(你看我https://pdawiki.com/forum/space-uid-147948.htm ...

  M1 U# x/ R6 U8 M我说是怎么回事,谢谢了!
  • 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
    ; \0 n. m4 \: p* z可以试试superfan89的引擎,转出效果应该和aard一样,不过我没试过。
    # A& \- b( {% G! o' p
    谢谢,我试试!不过aard是什么?

    该用户从未签到

     楼主| 发表于 2013-11-24 23:08:59 | 显示全部楼层
    本帖最后由 hyln9 于 2013-11-24 23:16 编辑
    9 K) |1 _( I0 h
    hyln9 发表于 2013-11-24 23:05 - U; z: A: c3 W$ P1 W7 n9 Z
    谢谢,我试试!不过aard是什么?

    7 M5 J1 C$ Z6 ?# P% f8 P, T4 |# I% V2 L: R8 G8 w
    哦,aard查到了,比我现在用的好啊!我现在用fastwiki和kiwix,前者有公式制作工具不过排版一般,后这简直是完美的无图wiki,但是英文版太大了只更新到了2012年,中文有2013的,不过有mdict版的了,也就不用了。
    ' Q4 n( X  @4 N. I5 M" e; G2 i% I! s5 T5 X& S
    现在没有linux环境,看来得过一段时间再说了。另外期待唯吾无为老大的新引擎!

    该用户从未签到

    发表于 2013-11-25 01:37:03 | 显示全部楼层
    lz可以寫破解的程式?!3 c0 b" o4 u" p* h
    那怎麼沒試試寫解析的引擎?!

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2013-11-25 17:20:44 | 显示全部楼层
    STFU 发表于 2013-11-25 01:37 1 u4 k/ D& ?6 N) C3 h! {
    lz可以寫破解的程式?!
    9 P$ O5 j; m, K  f那怎麼沒試試寫解析的引擎?!

    4 f6 W7 y% ?& S$ @引擎太复杂,我又没时间其实这个程序破解起来还是比较容易的,我就是把它的验证给替换了一下而已。

    该用户从未签到

     楼主| 发表于 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. '''# _; p3 {9 W0 [0 z
    2. Based on xmllarge.py
      , {$ m6 O- ~( ]8 e% O7 ?% {
    3. '''
      : I' b' `# e8 i2 g& D
    4. # from pyquery import PyQuery as pq
      ' l& N% B7 H% A# I7 Z
    5. from pathlib import Path
      - V- Z7 _( r" r: ?0 Q
    6. 7 t  Y" Z  J8 l/ a
    7. / y- o1 [2 G4 X" R
    8. def xml_iter(file, tag):, `4 Z/ R9 y& B( t3 e1 M
    9.     '''
      6 I+ n# y6 J! g
    10.     Process huge xml files
      1 A$ E5 ^/ c- I: r! G0 o, x' n
    11.     <tag> </tag> need to be in separate lines
      % E1 i" s% f+ a4 }; D! s
    12.     # TODO: in the middle of lines, @1 q: A* w& v1 H5 m7 j

    13. ) p; r  W9 s5 U$ m7 I: M: Q3 m
    14.     :file: file path+ |* Y" O  ~; X1 f' }# t
    15.     :tag: element to retrieve
      4 \6 Y- b* R1 D! T
    16.     '''
      ! |8 [& y9 c$ x5 ]+ a5 B$ A
    17.     tagb1 = '<' + tag + '>'
      8 G+ r; b/ j" v" ~0 l. L5 Z
    18.     tagb1 = tagb1.encode()* I; t8 ^8 l# U* e, m
    19. - i) D' h2 c  b( ?& ~  a, f
    20. 3 U# x4 X5 d8 K0 y: c6 }5 Q: ?
    21.     tagb2 = '<' + tag + ' '
      + C4 I. U+ i& H+ |2 Q, Q; l0 I  p
    22.     tagb2 = tagb2.encode()7 N5 y% P( j. B; h0 j& Q# c
    23. 5 P) V$ v- r% V& |- b
    24.     tagb3 = '</' + tag + '>'2 s; Z. z3 J( [" I) V. M9 s" Q
    25.     tagb3 = tagb3.encode()$ h: {, Q: Q! v7 t$ i

    26. / D4 F# \7 e3 l% `( N3 I" t
    27.     with open(file, 'rb') as inputfile:# V0 M! i+ k5 J0 h, B
    28.         append = False$ \& y; w+ J/ o
    29.         for line in inputfile:! }6 h" G1 v! B! c
    30.             #~ if b'<tu>' in line or b'<tu ' in line:1 q0 B, I0 M! O4 }
    31.             if tagb1 in line:: Z7 _2 P1 S, B, _, r2 \$ f
    32.                 inputbuffer = line[line.index(tagb1):], x7 `; B6 e: T; E' Z# D
    33.                 append = True6 k2 I. I$ I; t, `" J
    34.             elif  tagb2 in line:
      5 o0 y6 G1 X3 e! f- Y' [
    35.                 inputbuffer = line[line.index(tagb2):]
      2 }3 l' \' A5 r2 _* }' i% T! w
    36.                 append = True
      - x) @( s0 x3 ^5 @- Q0 a
    37.             #~ elif b'</tu>' in line:2 W+ v9 q# ~" ?0 w( o
    38.             elif tagb3 in line:
      8 Y8 B) G. r; \) D! p1 I  E, b2 g
    39.                 inputbuffer += line[:line.index(tagb3) + len(tagb3)]) ]1 ~9 f1 X1 M- i/ G
    40.                 append = False; E  m+ ]8 j& i( o6 A; y
    41.                 yield inputbuffer
      & |1 d) Q# ^  L
    42.                 #~ docitem = process_buffer(inputbuffer, id_num)
      9 e: N$ ?4 y% `( F. e# W! H, N0 @: M
    43.                 #~ print(id_num)6 c0 _5 P+ n/ D) R
    44.                 #~ id_num += 1
      9 o$ H4 e, {: Y4 b# z
    45.                 inputbuffer = b''. e/ A7 q* H) [' ]
    46.             elif append:: Z1 O% u2 Z% |! Q$ [
    47.                 inputbuffer += line
    复制代码
    5 E1 i5 `% |4 K  j1 O
    4 f+ j6 Z. j1 c/ Z
    这么多人找这东西?我过一阵打包发个小工具。( W: K) n8 X1 w
    & Z8 N# M+ e2 B9 _# K& D& A( P: T
    上面的python3函数用法: O9 B$ r5 }4 s: C0 C: U
    resu = ''
    $ z' W6 r4 K6 Z' W+ t3 i( n8 T/ pfor elm in xml_iter(filename, 'tu'):$ o) C7 x! Z# E9 _. @
        resu += elm
    + d/ p% e: F. B5 u& ^" A1 ~4 Z4 k6 v2 t/ d5 O$ n1 V8 _2 J
    内存足迹极小……不管文件多大。
  • 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:272 _0 Y2 }6 q6 N
    这么多人找这东西?我过一阵打包发个小工具。
    3 v3 B& i1 b9 q  P+ w3 N: W; _  t- v% R( c  |
    上面的python3函数用法
    . m5 G- S! i" g, v0 z
    就喜欢这种一言不合自己写工具的,后面看看你的代码
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-2 10:00 , Processed in 0.075764 second(s), 9 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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