2014-12-29 58 views
0

值大的XML文件是增量开始所以我有一个巨大的XML文件,采用以下格式:改变一个变量在1

<?xml version="1.0" encoding="UTF-8"?> 
<furnidata> 
    <roomitemtypes> 
    <furnitype id="13" classname="shelves_norja"> 
     <revision>49500</revision> 
     <defaultdir>0</defaultdir> 
     <xdim>1</xdim> 
     <ydim>1</ydim> 
     <partcolors> 
     <color>#ffffff</color> 
     <color>#F7EBBC</color> 
     </partcolors> 
     <name>Beige Bookcase</name> 
     <description>For nic naks and books.</description> 
     <adurl/> 
     <offerid>1871</offerid> 
     <buyout>1</buyout> 
     <rentofferid>-1</rentofferid> 
     <rentbuyout>0</rentbuyout> 
     <bc>1</bc> 
     <excludeddynamic>0</excludeddynamic> 
     <customparams/> 
     <specialtype>1</specialtype> 
     <canstandon>0</canstandon> 
     <cansiton>0</cansiton> 
     <canlayon>0</canlayon> 
    </furnitype> 
    <furnitype id="14" classname="shelves_polyfon"> 
     <revision>48082</revision> 
     <defaultdir>0</defaultdir> 
     <xdim>2</xdim> 
     <ydim>1</ydim> 
     <partcolors> 
     <color>0</color> 
     <color>0</color> 
     <color>0</color> 
     </partcolors> 
     <name>Bookcase</name> 
     <description>Make your books look sleek.</description> 
     <adurl/> 
     <offerid>2123</offerid> 
     <buyout>1</buyout> 
     <rentofferid>-1</rentofferid> 
     <rentbuyout>0</rentbuyout> 
     <bc>1</bc> 
     <excludeddynamic>0</excludeddynamic> 
     <customparams/> 
     <specialtype>1</specialtype> 
     <canstandon>0</canstandon> 
     <cansiton>0</cansiton> 
     <canlayon>0</canlayon> 
    </furnitype> 
    </roomitemtypes> 
</furnidata> 

所以那里有大约1000套不同的“furnitypes”,并保持很简单,我想(从上到下),每个炉子的'offerid'从1开始,在顶部开始,每个炉子增加1。

因此,第一个炉子的第一个报价为1,2,第二个为3,第三个为第三个,等等。现在每个Furnicpe的offerid都是随机数字。

即使世界太多的对我来说,手动1.

回答

0

编辑1这真的取决于你有什么用。例如,这个令人难以置信的丑陋的perl单线程将做到这一点(在Windows中 - 在* nix上,你可能需要单引号)。它从furn.xml中读取并写入furn-new.xml

perl -npe "$num = 1 if(!defined($num)); $num++ if (s/furnitype id=\"\d+\"/furnitype id=\"$num\"/g) " <furn.xml> furn-new.xml 

有可能是一个办法潜行$ NUM ++到表达,但它已经足够了:)

+0

说实话难看 - 我真的不知道我应该如何使用该行代码 – Below50

+0

只需安装perl并将其键入命令行。在不知道你有什么工具可用,以及你最喜欢的编程语言的情况下,人们很难提供帮助。每个人都会有自己喜欢的方式来做到这一点。我的例子对于一次性工作很好,但是对于自动化而言是不安全的,因为XML格式的细微变化可能会使其无效(它只适用于每行一个标签)。使用合适的XML解析库更安全但更复杂。 –

+1

@ Below50我只是补充一点,如果你不习惯为此编写一个程序,那么你最好在http://superuser.com/上询问,该程序更适用于程序使用。可能有一个工具可以帮助你做到这一点,但这可能是堆栈溢出的主题。 –