掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 4841|回复: 19

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

[复制链接]

该用户从未签到

发表于 2013-11-24 17:50:00 | 显示全部楼层 |阅读模式
本帖最后由 hyln9 于 2013-11-24 22:55 编辑 # d. ?2 E) a1 Z6 B1 @( h

/ w( O7 w! w+ A6 S$ x8 M& P& d之前打算制作英文维基20131104(https://www.pdawiki.com/forum/thread-11455-1-1.html),47.2GB的xml实在是让我无语,后来在o大的指导下找见了不错的replace pioneer,但是分割处理这么大的文件依然不给力。几经周折,找见了这款鲜为人知但是功能极为强大的xml分割工具,可以分割我的47.2gb的xml。售价貌似99刀,我只是想试用一下,没想到有1gb限制,所以自编程序怒破解之,分享给大家,但是仅限私下使用哦
3 |4 [- A, X3 M, i/ l" N" {) ^2 I" s9 N7 h( s+ L3 {3 U- p5 y
此软件为英文,但是功能确实很强大,截几张图给大家吧:; ^, K8 `9 U8 p  B4 l

( Z, `. Z8 ?2 ^5 w' V/ g. ~) l* `& m' f8 G- n* t& M" s

" c4 K; x' d+ X% _2 L) p: X" ]; G% Q0 b0 u- [1 J* s, n
" `: ~; A' a2 P4 q4 H
$ g1 ?6 n- s4 |1 ~

% ?) F9 g" @! j. C$ W4 `( Yps:不知道为什么i-wiki大大的引擎出了什么问题,无法转换。问题是我随便转了某个较小的外语xml成功,转换这个却失败,悲催啊,求教 所以先放出这个工具给大家带来点方便。
; A! \* `. V% K, G' @+ b  }/ h6 Z( `7 w: j! W0 O
破解方法:先安装程序。之后把XmlSplit_Crack.exe改名为XmlSplit.exe放入程序文件夹内覆盖原文件(源文件必须备份),运行程序,随便输XXX就注册成功了,然后恢复原来的XmlSplit.exe即可。天杀的360竟然报毒!请关闭360,注册完以后就可以打开360了。; `7 a4 m- N  ~, L- t

$ U/ L2 ?0 h1 c% @* ?; X5 Vhttp://pan.baidu.com/s/1eQoIY
0 V! o+ Z! Z2 s: o% v, ]密码pqw4: j% y5 k) l& V9 w* w
* f/ I5 _! q9 D

该用户从未签到

 楼主| 发表于 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 ! U# m+ x9 \; D7 z$ g$ _
关于图片显示,论坛有bug,我是先把图片上传到相册(你看我https://pdawiki.com/forum/space-uid-147948.htm ...
5 u8 o. a' u. ]9 C" ]
我说是怎么回事,谢谢了!
  • 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 - e2 [! O! M! Y* q! O4 U5 E
    可以试试superfan89的引擎,转出效果应该和aard一样,不过我没试过。

    ! m5 T4 y  X& S8 l1 p谢谢,我试试!不过aard是什么?

    该用户从未签到

     楼主| 发表于 2013-11-24 23:08:59 | 显示全部楼层
    本帖最后由 hyln9 于 2013-11-24 23:16 编辑
    - i* Y# F* ]3 [/ Q0 i5 m  k
    hyln9 发表于 2013-11-24 23:05
    + G- y6 V6 M7 ]谢谢,我试试!不过aard是什么?

    ! E# S) P0 w( W9 D* A) Z
    , K/ U" B/ M/ E% J: y哦,aard查到了,比我现在用的好啊!我现在用fastwiki和kiwix,前者有公式制作工具不过排版一般,后这简直是完美的无图wiki,但是英文版太大了只更新到了2012年,中文有2013的,不过有mdict版的了,也就不用了。4 G7 I; r5 b1 o% f, d
    3 g5 h4 Y( V9 v
    现在没有linux环境,看来得过一段时间再说了。另外期待唯吾无为老大的新引擎!

    该用户从未签到

    发表于 2013-11-25 01:37:03 | 显示全部楼层
    lz可以寫破解的程式?!$ ]# z8 \1 P8 m, G9 q& v/ u6 x' P
    那怎麼沒試試寫解析的引擎?!

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2013-11-25 17:20:44 | 显示全部楼层
    STFU 发表于 2013-11-25 01:37
    4 h9 Q  ~! O' J- I$ Rlz可以寫破解的程式?!
    + y" m6 p* d: B* b" S$ S那怎麼沒試試寫解析的引擎?!
    2 f) M! s# z7 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. '''( f- }7 D# U3 G" U% b! ?  N
    2. Based on xmllarge.py
      % D3 V+ @. b5 l! O8 K' M
    3. '''+ F7 m! Z- [( s  P
    4. # from pyquery import PyQuery as pq
      , m. c5 Y5 R7 r. h# `* E
    5. from pathlib import Path
      + \, {* n. c/ ?4 f6 X* k

    6. : K7 j: Z6 y; p) W' A2 j& {! x2 g* `! ~# y

    7. 7 s: e- p# m9 O7 F( j
    8. def xml_iter(file, tag):8 a8 g- e* [- L1 E, o% M. U5 p
    9.     '''1 b; J$ O+ y% F" D3 p( ~
    10.     Process huge xml files
      3 V. `! k2 Z% z4 p
    11.     <tag> </tag> need to be in separate lines
      - K) `) j. G7 y& E/ n
    12.     # TODO: in the middle of lines& O. S6 h& n3 s- Y

    13.   z  b! v4 m1 O, |" D
    14.     :file: file path+ k& C6 `  G6 A; H; }: l6 Q- O
    15.     :tag: element to retrieve2 N6 c# V, M$ I6 `& o3 U4 M/ `
    16.     ''': y+ ]: x, x( l( j1 @) U: T% W
    17.     tagb1 = '<' + tag + '>'5 q( o* _) j3 G6 b0 T' X
    18.     tagb1 = tagb1.encode()
      * X& O8 d, U; h; {
    19. % Y! G* r) k5 y

    20. , @9 v8 o7 {+ h) ~5 E5 q
    21.     tagb2 = '<' + tag + ' '
      # ^# k4 s2 j3 [1 F, D3 a
    22.     tagb2 = tagb2.encode()
      2 s5 [2 d! h4 H" B$ u

    23. ' ?7 Z: A" h& L
    24.     tagb3 = '</' + tag + '>', g/ J) ]# w. `7 D: `
    25.     tagb3 = tagb3.encode()
      , [  I8 e( c" S- d

    26. 7 c0 X" w& Y  ^9 j+ k8 m1 A
    27.     with open(file, 'rb') as inputfile:0 Y4 c! r: d2 u, B+ i9 H
    28.         append = False
      0 f6 T. z, l' H; t: p; _
    29.         for line in inputfile:
      4 h1 X$ ^# x3 T3 E
    30.             #~ if b'<tu>' in line or b'<tu ' in line:
      ' X5 V9 B9 \) e
    31.             if tagb1 in line:
      ' w' K+ Y/ O; x) |  k% [
    32.                 inputbuffer = line[line.index(tagb1):]. |" A1 X+ Y' T: U
    33.                 append = True
      2 j1 o- U' Q5 ^1 W) Z: X
    34.             elif  tagb2 in line:
      . g3 ~$ j$ ^% r
    35.                 inputbuffer = line[line.index(tagb2):]
      6 U" [2 d+ g9 z3 O) z6 O% n. U/ W
    36.                 append = True
      ' W% @! H$ ~1 P8 X5 X
    37.             #~ elif b'</tu>' in line:/ b2 U5 F$ w( A( _" F
    38.             elif tagb3 in line:
      0 U6 l' N* r, A3 M8 y
    39.                 inputbuffer += line[:line.index(tagb3) + len(tagb3)]
      / t3 \8 |: ?' L6 {. G( p/ m! w
    40.                 append = False4 w" r$ i9 u" g) Z1 Z
    41.                 yield inputbuffer' J6 |3 }1 Y/ M, F
    42.                 #~ docitem = process_buffer(inputbuffer, id_num)! v  Q0 H8 z1 d6 x/ h& w3 g  |
    43.                 #~ print(id_num)
      9 ~+ G/ E8 w: R0 }$ H6 B& t
    44.                 #~ id_num += 1- Q2 }# _4 G& N' s5 ^5 X5 L6 _
    45.                 inputbuffer = b''
      ; V# G/ U' L6 G& j* o8 Q
    46.             elif append:- m- S4 w0 H, o2 v* j; e
    47.                 inputbuffer += line
    复制代码

    " |/ a6 p  ?1 R- ]8 `! {) U* z7 _" K; ?" p/ s, N
    这么多人找这东西?我过一阵打包发个小工具。
    0 m& Y7 i2 c/ [* W$ ?) h& _; ]
    ' b9 l* b( I) r" q上面的python3函数用法5 G/ o6 r" e1 @. i, |, ~
    resu = ''
    , `- S, o  a' v; h+ x6 ~for elm in xml_iter(filename, 'tu'):
    8 l2 t% U/ L( A; g6 T4 H. b    resu += elm
    4 e4 i: i; T* \  D3 i, ?# F& l( @+ v, O0 ^$ Y7 X, J, c
    内存足迹极小……不管文件多大。
  • 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" Q+ c1 }# U! B7 w5 V! D
    这么多人找这东西?我过一阵打包发个小工具。
    1 \/ `! F3 U! q, P
      q3 p$ R" o( M5 Q* z上面的python3函数用法

    * b8 b5 T0 i. t7 `2 W. Z就喜欢这种一言不合自己写工具的,后面看看你的代码
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-9 02:32 , Processed in 0.062565 second(s), 10 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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