掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 4832|回复: 19

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

[复制链接]

该用户从未签到

发表于 2013-11-24 17:50:00 | 显示全部楼层 |阅读模式
本帖最后由 hyln9 于 2013-11-24 22:55 编辑
, F  B3 W5 A2 u! G1 ]1 t9 Z' l; Y0 z+ |
之前打算制作英文维基20131104(https://www.pdawiki.com/forum/thread-11455-1-1.html),47.2GB的xml实在是让我无语,后来在o大的指导下找见了不错的replace pioneer,但是分割处理这么大的文件依然不给力。几经周折,找见了这款鲜为人知但是功能极为强大的xml分割工具,可以分割我的47.2gb的xml。售价貌似99刀,我只是想试用一下,没想到有1gb限制,所以自编程序怒破解之,分享给大家,但是仅限私下使用哦
/ v# N; b, v2 V' F8 _9 g  q
& n4 A$ ]# P9 j1 T此软件为英文,但是功能确实很强大,截几张图给大家吧:  r) N4 C6 s3 R8 I

8 l# Z# T0 g/ B3 x1 n8 P3 G% h/ ]+ n9 d
8 s$ y3 w) j, g& T9 S" f- y6 s

! n/ l: C3 C3 I, I- B
7 w1 e* f8 [. Z# ?' Y1 y8 [5 I
9 l: K# l* `7 K1 C4 q5 |6 }8 g! K7 |
ps:不知道为什么i-wiki大大的引擎出了什么问题,无法转换。问题是我随便转了某个较小的外语xml成功,转换这个却失败,悲催啊,求教 所以先放出这个工具给大家带来点方便。4 u* [; ?) Q2 G

, x8 S, L: N( K" H9 B: C破解方法:先安装程序。之后把XmlSplit_Crack.exe改名为XmlSplit.exe放入程序文件夹内覆盖原文件(源文件必须备份),运行程序,随便输XXX就注册成功了,然后恢复原来的XmlSplit.exe即可。天杀的360竟然报毒!请关闭360,注册完以后就可以打开360了。; A4 h) u4 B' p5 r
5 c# W% u( B% h) |% A. t5 I% Q
http://pan.baidu.com/s/1eQoIY/ [3 L' }/ ~% X4 S% c3 n8 F9 j
密码pqw4- H) l  X) O2 y& T( `
9 E- j: T. p8 _/ H) [% p% e3 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 , @0 q2 E$ g& P$ I; r& h3 W
关于图片显示,论坛有bug,我是先把图片上传到相册(你看我https://pdawiki.com/forum/space-uid-147948.htm ...

4 Y* W0 j" c4 |7 \+ D我说是怎么回事,谢谢了!
  • 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
    3 S# h& B* [5 |# ^( ~( t可以试试superfan89的引擎,转出效果应该和aard一样,不过我没试过。

    * s8 ?- t) g2 b: P( \# K5 x9 B+ h谢谢,我试试!不过aard是什么?

    该用户从未签到

     楼主| 发表于 2013-11-24 23:08:59 | 显示全部楼层
    本帖最后由 hyln9 于 2013-11-24 23:16 编辑
    3 G1 t$ m4 G) S9 Q6 k
    hyln9 发表于 2013-11-24 23:05
    4 ^! f: p4 f" ]$ D6 }& A谢谢,我试试!不过aard是什么?
    5 ~3 w3 c3 k' K- v& F4 \
    , K* ?" q- g3 Z) y7 b
    哦,aard查到了,比我现在用的好啊!我现在用fastwiki和kiwix,前者有公式制作工具不过排版一般,后这简直是完美的无图wiki,但是英文版太大了只更新到了2012年,中文有2013的,不过有mdict版的了,也就不用了。) _# d4 _3 @: a7 [( n0 H2 j

    / P! @8 W& Q3 b6 j: h$ a7 a- {现在没有linux环境,看来得过一段时间再说了。另外期待唯吾无为老大的新引擎!

    该用户从未签到

    发表于 2013-11-25 01:37:03 | 显示全部楼层
    lz可以寫破解的程式?!! a* {. s) i2 i# B2 @. R
    那怎麼沒試試寫解析的引擎?!

    本帖子中包含更多资源

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

    x

    该用户从未签到

     楼主| 发表于 2013-11-25 17:20:44 | 显示全部楼层
    STFU 发表于 2013-11-25 01:37 3 W0 n: Y6 ]' F7 M1 E
    lz可以寫破解的程式?!  X1 I8 o1 Z( N2 l7 O% x" k
    那怎麼沒試試寫解析的引擎?!

    # D. a$ d6 F: @+ D引擎太复杂,我又没时间其实这个程序破解起来还是比较容易的,我就是把它的验证给替换了一下而已。

    该用户从未签到

     楼主| 发表于 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. '''
      5 d$ h4 h% |/ I  p( o$ C
    2. Based on xmllarge.py
      2 c$ k2 x9 N6 t( {. F
    3. '''. E1 C; i9 D' k) G  s
    4. # from pyquery import PyQuery as pq
      ( t! G8 I% [- Q5 ^& W
    5. from pathlib import Path4 N& x! x: G7 o: l% A
    6. 9 l' X/ _) i. w4 a- n# i2 a& l' ~: O
    7. 4 N: m. p2 K! C1 m" {
    8. def xml_iter(file, tag):8 [3 @2 m# f+ w! ~
    9.     '''2 _2 x8 N0 j/ `! R* V- @
    10.     Process huge xml files
      6 o& X  x+ f5 p+ `4 _: Y8 \
    11.     <tag> </tag> need to be in separate lines
      & W9 G! e( I7 A3 x) Y. T4 s
    12.     # TODO: in the middle of lines
      + z8 T5 m+ v6 t: A  D2 P' @
    13. 9 Y. O, d. q: S+ m+ n
    14.     :file: file path
      5 {$ k# ?4 v) {- u
    15.     :tag: element to retrieve$ f1 z* P, b6 j7 i/ ~0 M
    16.     '''
      " L  D" q6 f! d2 X2 U4 C
    17.     tagb1 = '<' + tag + '>'
      : B/ w! t5 z8 I4 v+ ]$ q
    18.     tagb1 = tagb1.encode()* F5 L: c4 _9 t6 S5 d" |

    19. ' D/ ]7 Q& F0 _: p! T" L

    20. 2 ]1 K4 B8 s2 Q; |( ]# l0 O; t
    21.     tagb2 = '<' + tag + ' '
      , |; h/ i" O! u* J. l
    22.     tagb2 = tagb2.encode()% B8 ~7 O9 p  m6 f; b
    23. 4 R+ u" Q2 N% y2 w1 \0 h8 \# p, o4 S
    24.     tagb3 = '</' + tag + '>'
      2 }9 j+ ?$ p3 ~7 R
    25.     tagb3 = tagb3.encode()4 q# P' b, f0 M) Z5 P
    26. ' N$ W! T! z! L3 `9 U% T
    27.     with open(file, 'rb') as inputfile:
        j2 p1 }  i( H) _
    28.         append = False( I( v/ }& P$ M8 l
    29.         for line in inputfile:. I. }' X- x/ _, h7 ^" m+ l
    30.             #~ if b'<tu>' in line or b'<tu ' in line:
      / ~- R. m- i( v
    31.             if tagb1 in line:
      / P% v& X3 M8 m2 ~# h0 B! ~
    32.                 inputbuffer = line[line.index(tagb1):]* y  X6 n3 R" ~
    33.                 append = True; U( k% g  a. a: r+ q. E* v
    34.             elif  tagb2 in line:7 q3 H; }: B. j
    35.                 inputbuffer = line[line.index(tagb2):]6 E+ U5 }; K2 o' L  X6 a) c6 l
    36.                 append = True) \3 R4 L+ n, X! Q$ I( l
    37.             #~ elif b'</tu>' in line:* S( p& T$ [1 b; {" B3 U1 c
    38.             elif tagb3 in line:) d+ g5 ?: D7 j
    39.                 inputbuffer += line[:line.index(tagb3) + len(tagb3)]
      & P% z& A5 p7 p3 r0 h, D! ?
    40.                 append = False, x( `# N. @& z/ G, G4 k0 I
    41.                 yield inputbuffer
      + d- h3 b' N# t6 x9 s( P+ T/ ?
    42.                 #~ docitem = process_buffer(inputbuffer, id_num)* a4 ~$ ]# V  q. E$ J5 G% j
    43.                 #~ print(id_num)
      0 G6 K; G/ N" F) U5 P1 s
    44.                 #~ id_num += 18 {( z& M; Q& X- h4 ]8 f& k
    45.                 inputbuffer = b''/ K2 x9 ?8 ~" b5 A2 O: \
    46.             elif append:
      4 g/ }* ]/ @* ]. T1 C
    47.                 inputbuffer += line
    复制代码

    5 q6 i* S8 n! f
    5 M+ e& `# [8 w这么多人找这东西?我过一阵打包发个小工具。5 |) E5 b  H' G0 }8 ~7 R- |
    ; E5 S) e6 e8 z4 ]
    上面的python3函数用法
    " Z0 N+ D7 [+ p: i0 Nresu = ''! A. m* V, c# g" h" W% |6 D
    for elm in xml_iter(filename, 'tu'):+ `7 Z9 ?7 c; p5 \- K1 m
        resu += elm* h; {  }  y5 H

    ( m* ~# j3 [' W8 E' ~: z内存足迹极小……不管文件多大。
  • 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' d; I3 O( [7 e) R
    这么多人找这东西?我过一阵打包发个小工具。0 J, x: m% E  q$ I. ~
      W1 ]) Q9 q) w6 Q
    上面的python3函数用法

    5 K$ A! N5 S. M0 U/ D( y$ t/ e! v就喜欢这种一言不合自己写工具的,后面看看你的代码
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-27 08:15 , Processed in 0.055962 second(s), 9 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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