免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3668 | 回复: 12
打印 上一主题 下一主题

送“饭”来了——嘻嘻 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-18 14:57 |只看该作者 |倒序浏览
处理xml格式的文件:
  <project>
    <category>${SvnRepoName}</category>
    <name>${ModuleName}</name>
    <webURL>http://192.168.×.×/ccnet/server/local/project/${ModuleName}/ViewProjectReport.aspx</webURL>
    <workingDirectory>E:\Build\Build_Src\${ModuleName}</workingDirectory>
    <artifactDirectory>E:\Build\Build_Log\${ModuleName}</artifactDirectory>
    <externalLinks>
       <externalLink name="${ModuleName} path of put out" url="ftp://192.168.×.×/${FtpPos}" />
    </externalLinks>
    <state type="state" directory="E:\Build\Build_State" />
    <labeller type="defaultlabeller">
        <prefix></prefix>
        <incrementOnFailure>false</incrementOnFailure>
    </labeller>
    <publishers>
      <statistics>
         <statisticList />
      </statistics>
      <xmllogger logDir="E:\Build\Build_Log\${ModuleName}\buildlogs"/>
    </publishers>
    <triggers>
       <scheduleTrigger time="1:30" buildCondition="ForceBuild">
       </scheduleTrigger>
    </triggers>
    <sourcecontrol type="svn" autoGetSource="true">
                    <executable>svn</executable>
                    <username>Build</username>
       <trunkUrl>${SvnProjectPath}</trunkUrl>
       <workingDirectory>E:\Build\Build_Src\${ModuleName}</workingDirectory>               
    </sourcecontrol>
    <tasks>
      <nant>        
        <buildFile>E:\Build\Build_Src\${ModuleName}\Build\BuildFile</buildFile>
        <executable>nant</executable>        
        <logger>NAnt.Core.XmlLogger</logger>
                                <targetList>
                                    <target>${BuildTarget}</target>
                                </targetList>
        <nologo>True</nologo>
     </nant>
    </tasks>
  </project>
  
  
有一文件格式如上,想对它进行处理:
1、文件会有多个<project></project>
2、每一个<project></project>的不同之处在于${}变量值的不同
3、要通过外部变量参数值的变化修改对应的<project></project>的信息

问题:如何对该文件进行操作处理呢,,一起来分析设计下。

论坛徽章:
0
2 [报告]
发表于 2007-10-18 17:08 |只看该作者
多个project之间区别在哪里,对于你所说的不同的project${}变量不同是什么意思?是指变量名也不一样吗?如果是这样可能通过正则式进行替换.或不考虑效率的话使用replace替换也可以.

论坛徽章:
0
3 [报告]
发表于 2007-10-19 10:24 |只看该作者
多个project之间区别在哪里,对于你所说的不同的project${}变量不同是什么意思?
呵呵,有没有看到文件中,有一些是用${}括起来的,就是指那些的不同。

第一次要这么复杂处理这样的文件,有疑问。先处理第一个,你说是将它当作一般的文本文件来处理,还是当作xml文件来处理。

论坛徽章:
0
4 [报告]
发表于 2007-10-19 10:35 |只看该作者
添加动作,利用模板(即存储以上文件的信息,不过,其中${}的变量用%s来代替),然后python中,用这样的形式处理
fileinfo %(SvnRepoName,ModuleName,ModuleName,ModuleName,ModuleName,ModuleName,FtpPos,ModuleName,SvnProjectPath,ModuleName,ModuleName,BuildFile,BuildTarget)。。这样的效率是不是会很低啊。。

不过,可能用正则表达式来处理,会快点。

论坛徽章:
0
5 [报告]
发表于 2007-10-19 12:34 |只看该作者
要替换两次会低一些.可以使用 re.sub来进行替换.其中sub可以传入一个函数对替换串进行处理.

论坛徽章:
0
6 [报告]
发表于 2007-10-19 13:58 |只看该作者
可是,我每次怎么取想要的某项project的信息,然后将信息替换完后,又将它写到原来的位置呢。

论坛徽章:
0
7 [报告]
发表于 2007-10-19 14:18 |只看该作者
整个扫描一遍,替换完了覆盖不就行了.

论坛徽章:
0
8 [报告]
发表于 2007-10-19 14:24 |只看该作者
覆盖??有那么多个project,,怎么确定覆盖的那个位置啊。。

论坛徽章:
0
9 [报告]
发表于 2007-10-19 14:34 |只看该作者
简单的话就是全部覆盖,不然你只能将project解析成多段,然后处理完毕再拼成一个更写回去就行了.

论坛徽章:
0
10 [报告]
发表于 2007-10-19 15:27 |只看该作者
我想知道,,能不能当作xml文件来处理,会更容易些。
  有没有可以,直接找到project是第几个节点,在该节点下加入更新的然后删除旧的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP