掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 4756|回复: 19

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

[复制链接]

该用户从未签到

发表于 2013-11-24 17:50:00 | 显示全部楼层 |阅读模式
本帖最后由 hyln9 于 2013-11-24 22:55 编辑
; `6 ?, W; O& A& |5 `- v% K  O6 s7 |# b; h- ^
之前打算制作英文维基20131104(https://www.pdawiki.com/forum/thread-11455-1-1.html),47.2GB的xml实在是让我无语,后来在o大的指导下找见了不错的replace pioneer,但是分割处理这么大的文件依然不给力。几经周折,找见了这款鲜为人知但是功能极为强大的xml分割工具,可以分割我的47.2gb的xml。售价貌似99刀,我只是想试用一下,没想到有1gb限制,所以自编程序怒破解之,分享给大家,但是仅限私下使用哦 # z2 i5 t7 b4 h8 w

2 Z( D7 f. V3 m6 J1 z$ V7 _此软件为英文,但是功能确实很强大,截几张图给大家吧:" T. P  |& |3 ^4 Y: l
1 w3 ]) j6 `( I/ P' N: ?) q5 B/ @

: |9 r6 N- g( w9 x% s
4 h8 ]8 i# I# z; _; }/ @% X" E# @0 A" s- s8 U
% `# z$ [6 T5 E1 L# t' @

/ x1 o2 l; r! [* j* e$ Q
6 ?$ K, C- C" Q1 x; Ups:不知道为什么i-wiki大大的引擎出了什么问题,无法转换。问题是我随便转了某个较小的外语xml成功,转换这个却失败,悲催啊,求教 所以先放出这个工具给大家带来点方便。0 i. ^. }' Q  Y) w8 R2 b

2 H9 ~: T8 F( |破解方法:先安装程序。之后把XmlSplit_Crack.exe改名为XmlSplit.exe放入程序文件夹内覆盖原文件(源文件必须备份),运行程序,随便输XXX就注册成功了,然后恢复原来的XmlSplit.exe即可。天杀的360竟然报毒!请关闭360,注册完以后就可以打开360了。
: q' @) M0 r5 u. f5 ], G  u
7 [! z" ]; I4 V( v, R+ Xhttp://pan.baidu.com/s/1eQoIY- E  c' x, e8 L- [1 J3 r6 k
密码pqw4
$ b" @( p  g, L5 G( f& X
& G1 I( c( f( u8 H( I& G* S

该用户从未签到

 楼主| 发表于 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 v8 E7 o& ^. [7 F2 W关于图片显示,论坛有bug,我是先把图片上传到相册(你看我https://pdawiki.com/forum/space-uid-147948.htm ...

. v9 V. m- p. I7 X+ }! P我说是怎么回事,谢谢了!
  • 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 ( B8 C4 S7 n$ r" X/ N- Q/ ?# Y; a  K0 n. W
    可以试试superfan89的引擎,转出效果应该和aard一样,不过我没试过。

    ) i+ V) |& V8 E: N谢谢,我试试!不过aard是什么?

    该用户从未签到

     楼主| 发表于 2013-11-24 23:08:59 | 显示全部楼层
    本帖最后由 hyln9 于 2013-11-24 23:16 编辑
    ' c6 e6 n) f( m* }4 [- N( P: ~9 ]
    hyln9 发表于 2013-11-24 23:05
    5 F" o/ z! g8 B: q& _谢谢,我试试!不过aard是什么?

    : J# F1 V$ m& U% ^. L# u  U* I/ k! `% Z& ?" }
    哦,aard查到了,比我现在用的好啊!我现在用fastwiki和kiwix,前者有公式制作工具不过排版一般,后这简直是完美的无图wiki,但是英文版太大了只更新到了2012年,中文有2013的,不过有mdict版的了,也就不用了。
      @- F- H1 r0 D7 ^! T
    $ b2 V0 w9 s, {  J现在没有linux环境,看来得过一段时间再说了。另外期待唯吾无为老大的新引擎!

    该用户从未签到

    发表于 2013-11-25 01:37:03 | 显示全部楼层
    lz可以寫破解的程式?!
    3 k2 j) K# L( B- t8 K2 ~5 V那怎麼沒試試寫解析的引擎?!

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2013-11-25 17:20:44 | 显示全部楼层
    STFU 发表于 2013-11-25 01:37 / G( Y) k3 k$ V" O9 ]5 p9 G9 ]
    lz可以寫破解的程式?!/ B7 O( W! }* v" t* |$ S
    那怎麼沒試試寫解析的引擎?!

    8 X8 c+ Y; I, X$ 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. '''. G  g- A; H+ m( V2 M, X1 n
    2. Based on xmllarge.py; `4 _! _1 ~5 |$ F
    3. '''
      $ X& I* f) ^) s2 _  O# u' p6 C( O
    4. # from pyquery import PyQuery as pq
      ; t3 P0 Q  [9 `4 B! S
    5. from pathlib import Path
      7 T4 j: _. O& _: d8 z
    6. & \" |- b9 p, M! ?4 F7 i7 f

    7. , |! m1 x$ i* K! {/ d3 B+ x
    8. def xml_iter(file, tag):
      0 R( i  ^- n! @
    9.     '''
      ! m: `0 G, M9 q2 Q/ J1 S6 h
    10.     Process huge xml files2 s/ r/ M0 T6 x  {, E# [4 v; O( h
    11.     <tag> </tag> need to be in separate lines  b) B# K  V" E5 r) H) c( y4 A/ z
    12.     # TODO: in the middle of lines
      & u; |' x. I( i# @; q' q5 P
    13.   d6 `5 Q; \, s  O6 c( c0 ?8 |
    14.     :file: file path& Q7 H) o# G' a  R$ l! s" q% K% k
    15.     :tag: element to retrieve
      3 u8 R6 q% l6 S
    16.     '''; E8 O. }' R+ P- z; J" Y( O
    17.     tagb1 = '<' + tag + '>'0 d$ h9 k: |7 u( n/ l
    18.     tagb1 = tagb1.encode()9 }. t6 t5 b" X

    19.   t/ Q% b, q, @0 N! J' v

    20. + b# K$ P0 H+ X. l* C+ |
    21.     tagb2 = '<' + tag + ' '
      ! J5 P7 T) L1 Z0 ~1 ~) H
    22.     tagb2 = tagb2.encode()
      . N4 _* s/ v+ F+ T  Q
    23. $ |2 a1 j# V$ F
    24.     tagb3 = '</' + tag + '>'9 e9 z* C  \. a8 {+ z/ t* H4 w
    25.     tagb3 = tagb3.encode()% L% i7 F" Q, u$ d5 U+ @# K0 y) ^3 S
    26. 8 Q9 u  _" p7 e  K2 V
    27.     with open(file, 'rb') as inputfile:: T! F! U  e0 U! X5 @
    28.         append = False
      , G2 X; G2 {" R
    29.         for line in inputfile:
      / @! [4 [9 i4 B3 G% K% }
    30.             #~ if b'<tu>' in line or b'<tu ' in line:
      2 B, ?' O7 u- j. ]' ?3 T
    31.             if tagb1 in line:
      2 n( t0 k& U( D8 O3 t
    32.                 inputbuffer = line[line.index(tagb1):]
      5 r3 [! R# ^' O: r% t
    33.                 append = True5 C* q* h  p2 u$ Y, v5 S6 [
    34.             elif  tagb2 in line:3 F/ a4 h- r  m! j! s/ R
    35.                 inputbuffer = line[line.index(tagb2):]9 ]) Q- K& W+ E6 Y, _  _
    36.                 append = True
      1 u- U1 q9 S3 [; a; p% n; v
    37.             #~ elif b'</tu>' in line:
      " @' `* Q( M6 y( L0 w! P
    38.             elif tagb3 in line:7 [; I6 d0 T1 N# _
    39.                 inputbuffer += line[:line.index(tagb3) + len(tagb3)]# |- s6 ]% E, v/ E
    40.                 append = False
      * i  S, M* F+ w8 c, B, M
    41.                 yield inputbuffer
      . c+ W6 w0 M7 O
    42.                 #~ docitem = process_buffer(inputbuffer, id_num)
      ; y$ G0 I. f  A9 K  R0 G
    43.                 #~ print(id_num)
      2 c1 _5 D% k7 U
    44.                 #~ id_num += 1
      2 Z9 e' N4 l! z) t
    45.                 inputbuffer = b''
      / ]+ ^" N7 z+ j
    46.             elif append:: i5 z6 e# b& M/ Y2 W0 L
    47.                 inputbuffer += line
    复制代码
    : m$ a' l" G+ X9 k, m# B1 I

    , I0 ^# m8 u5 O, c9 O这么多人找这东西?我过一阵打包发个小工具。6 t) F* ^& ^# r0 N$ ~# E1 d

    - {! d( N1 d# C上面的python3函数用法( k. a; R6 C6 m9 q: |
    resu = ''6 u8 Z  f2 p/ w( Z) J2 `
    for elm in xml_iter(filename, 'tu'):/ F) F0 G: ^' p' k" `( V7 E
        resu += elm: e8 a) k0 o2 E% k8 ~4 p$ ?

    9 N& [# g: K2 b内存足迹极小……不管文件多大。
  • 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
    7 }! Y- j! H' d) r% _1 j! ]$ h3 v这么多人找这东西?我过一阵打包发个小工具。" [( D) }2 M/ v
    + x' J! ]0 a: n8 b7 y3 L
    上面的python3函数用法
    # \, e7 g7 h6 t1 x7 u9 N
    就喜欢这种一言不合自己写工具的,后面看看你的代码
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-19 04:42 , Processed in 0.052782 second(s), 9 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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