ant中匹配xml内容并替换,匹配换行

ant 中的 replaceregexp 正则表达式替换,可以在我们对项目构建的时候,替换处理各种格式的文件内容。

有如下 AndroidManifest.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.shanhy.example.packers"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="false"
        android:name="com.shanhy.example.packers.MyApplication"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

现在有需求:
1) 需要替换 application 中的 android:name 属性的内容为 com.shanhy.example.packers.ShellApplication

2) 并且在 application 节点后面添加一段代码 <meta-data android:name="APPLICATION_CLASS_NAME" android:value="com.shanhy.example.packers.MyApplication" />  其中属性 value 的值为 application 的 android:name 属性替换之前的值。

实现脚本如下:

<!--处理AndroidManifest.xml文件-->
<target name="modify-manifest" depends="clean-resource,copy-resource">
<loadfile property="manifest.content"
     srcFile="${basedir}/AndroidManifest.xml"
     failonerror="true"/>

<!-- 提取实际运行程序的applicationName -->
<propertyregex property="manifest.application.name" 
input="${manifest.content}" 
regexp="&lt;application([^..]*)android:name=&quot;(\S*)&quot;([^..]*)&gt;" 
select="\2" 
casesensitive="true" />
<echo>${manifest.application.name} >>>> ${shellApplication}</echo>

<!-- 修改application节点的android:name属性-->
<replaceregexp flags="g" byline="false">
<regexp pattern="&lt;application([^..]*)android:name=&quot;(\S*)&quot;([^..]*)&gt;" />
<substitution expression="&lt;application\1android:name=&quot;${shellApplication}&quot;\3&gt;" />
<fileset dir="${basedir}" includes="AndroidManifest.xml" />
</replaceregexp>

<!-- 在application节点下增加meta-data标签 -->
<replaceregexp flags="g" byline="false">
<regexp pattern="&lt;application([^&gt;]*)&gt;" />
<substitution expression="&lt;application\1&gt; &lt;meta-data android:name=&quot;APPLICATION_CLASS_NAME&quot; android:value=&quot;${manifest.application.name}&quot; /&gt; " />
<fileset dir="${basedir}" includes="AndroidManifest.xml" />
</replaceregexp>
</target>

-----------------------------

(完)

时间: 2024-09-29 16:39:06

ant中匹配xml内容并替换,匹配换行的相关文章

SQL Server2005打开数据表中的XML内容时报错的解决办法_mssql2005

从SQL Server2005开始提供了一种新的数据类型XML type,它允许用户将数据以XML文件的格式直接存储到数据表中.结合在ASP.NET中使用Linq to Sql,我们可以非常方便地将XML文件存储到SQL Server数据库中.但是在默认情况下,如果你存储的XML文件比较大(超过2MB),在SQL Server管理器中不能直接点击查看XML内容而报以下错误提示: 如何解决该问题呢?很简单,其实错误提示中已经描述地很清楚了,在SQL Server Management Studio

关于SQL Server打开数据表中的XML内容时报错的解决办法

从SQL Server2005开始提供了一种新的数据类型XML type,它允许用户将数据以XML文件的格式直接存储到数据表中.结合在ASP.NET中使用Linq to Sql,我们可以非常方便地将XML文件存储到SQL Server数据库中.但是在默认情况下,如果你存储的XML文件比较大(超过2MB),在SQL Server管理器中不能直接点击查看XML内容而报以下错误提示: 如何解决该问题呢?很简单,其实错误提示中已经描述地很清楚了,在SQL Server Management Studio

响应消息的内容类型 text/xml; charset=ISO-8859-1 与绑定(text/xml; charset=utf-8)的内容类型不匹配。如果使用

问题描述 用c#测试个合作伙伴公司的webservice(php编写的),测试代码:protectedvoidPage_Load(objectsender,EventArgse){bzezt.getmesxmlPortTypeClientptc=newbzezt.getmesxmlPortTypeClient();stringrtn=ptc.getmesxml("test",MD5Encoding("888888"));}publicstaticstringMD5E

c-请问匹配字符串中重复字符串内容的正则表达式怎么写?

问题描述 请问匹配字符串中重复字符串内容的正则表达式怎么写? 匹配字符串中重复的字符串内容的正则表达式 或者匹配不重复的字符串内容? 解决方案 ASP 正则表达式匹配字符串提取正则表达式 字符串完全匹配获取正则表达式匹配的字符串 解决方案二: http://blog.csdn.net/zhulinu/article/details/17148511 解决方案三: 用"+"来表示重复一次或多次,建议看看正则表达式

js正则匹配出内容中图片及所有图片地址src

实现:通过js正则匹配出所有图片及所有图片地址src. 思路:1.匹配出图片img标签(即匹配出所有图片),过滤其他不需要的字符 2.从匹配出来的结果(img标签中)循环匹配出图片地址(即src属性) 代码:(你可以复制到本地试试)  代码如下 复制代码 <script type="text/javascript"> //思路分两步:作者(yanue). //1,匹配出图片img标签(即匹配出所有图片),过滤其他不需要的字符 //2.从匹配出来的结果(img标签中)循环匹配

Android实现动态自动匹配输入内容功能

什么是动态自动匹配输入内容呢?举个例子,当我们在百度等搜索引擎的输入框中输入想要搜索的关键词,输入框下面会提示很多相关联的热门搜索项,效果图如下 那在安卓中如何实现这种效果呢?在这里给大家推荐两个Android的控件: AutoCompleteTextView MultiAutoCompleteTextView 一.AutoCompleteTextView 独特属性:android:completionThreshold="2"-–设置输入多少字符时自动匹配 首先,我们先在res文件夹

文本框-匹配相关内容,就像邮箱一样

问题描述 匹配相关内容,就像邮箱一样 怎么实现在文本框里输入字符串并出现相关的字符串,并且点击出现的内容并在出入框中显示 解决方案 做一个表格,记录相关的内容,然后在输入的文本框里写代码,内容变化时过滤表格来实现你说的功能,用户选择表格中某一行时,把值赋到文本框里 解决方案二: 网页上的一种局部刷新东西搞的?匹配字符完后返回给div?纯属路过 解决方案三: 网页上的一种局部刷新东西搞的 ajax

c中怎么实现查看两个字符串的匹配情况,返回能够匹配的字符的个数

问题描述 c中怎么实现查看两个字符串的匹配情况,返回能够匹配的字符的个数 比如,一个字符串是w_angqmab,,,另一个字符串是w+bangemx,,我想编写一个函数,,让它返回后一个字符串与前一个字符串得到匹配字符的个数,,,,我该怎么编写函数啊,,求大神们指点!!!!万分感谢!!!急急急急---- 解决方案 排序后再比较计数. 用C#演示一下,C的处理方式类似. using System; using System.Collections.Generic; using System.Lin

字符-php中模糊查询出现查询不匹配

问题描述 php中模糊查询出现查询不匹配 模糊查询,查询出来的结果跟输入的字符不一样.我昨天查询'生',出现结果有俩个'生产部'.'销售部'.查询我用的是 like '%字符%'.哪位可以帮忙解决.谢谢. 解决方案 销售部也能查询出来?你确认你显示的字段和你查询的字段同一个?还是查询的另外一个字段,显示的和查询字段不一样什么的 解决方案二: $sql=""select R_AddressR_NoR_IDR_DescR_Status from A_Repository where R_A