Android Gradle脚本:如何在XML文件中创建和写入数据
我正在创建xml,通过使用gradle脚本并在xml文件中写入一些数据。我已经创建了.gradle文件,在运行gradle文件之后,我无法获得xml文件的确切格式。我将我的代码张贴在下面:请任何人指导我。 导入groovy.xml.MarkupBuilderAndroid Gradle脚本:如何在XML文件中创建和写入数据,android,xml,gradle,groovy,build.gradle,Android,Xml,Gradle,Groovy,Build.gradle,我正在创建xml,通过使用gradle脚本并在xml文件中写入一些数据。我已经创建了.gradle文件,在运行gradle文件之后,我无法获得xml文件的确切格式。我将我的代码张贴在下面:请任何人指导我。 导入groovy.xml.MarkupBuilder task generatepublicxml { //def resDir = project.projectDir.absolutePath + "/src/main/res-public" // Create new
task generatepublicxml {
//def resDir = project.projectDir.absolutePath + "/src/main/res-public"
// Create new public.xml with writer
new File("/home/signity/Desktop/public.xml").withWriter { writer ->
// Create MarkupBuilder with 4 space indent
def destXml = new MarkupBuilder(new IndentPrinter(writer, " ", true));
def destXmlMkp = destXml.getMkp();
// GIST NOTE: our project needed the ResourceName suppression, but its not needed in general
destXml.resources('xmlns:tools': 'http://schemas.android.com/tools', 'tools:ignore': 'ResourceName')
{
// Leave file comment
destXmlMkp.yield "\r\n"
destXmlMkp.comment("AUTO-GENERATED FILE. DO NOT MODIFY. public.xml is generated by the generatepublicxml gradle task")
}
}
}
我所需的文件格式:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="remoteAccessConsumerKey">3MVG92mNMNiWvonjPDM9qqaDip0MFl9TGc</string>
<string name="oauthRedirectURI">saleschap:///mobilesdk/detect/oauth/done</string>
<string-array name="oauthScopes">
<item>api</item>
<item>web</item>
<item>refresh_token</item>
</string-array>
<string name="androidPushNotificationClientId"></string>
</resources>
3MVG92MNIWVONJPDM9QQADIP0MFL9TGC
saleschap:///mobilesdk/detect/oauth/done
应用程序编程接口
网状物
刷新令牌
因为我看到您是在gradle构建文件中执行此操作的,所以首先请注意gradle执行阶段
我假设您希望代码在任务执行时运行,而不是在加载构建文件时运行。如果是这样,您需要将代码放入任务中的doFirst
或doLast
块中。如果您按照问题中的方式编写代码,则无论任务generatepublicxml
是否运行,在加载构建文件时都会执行代码(即,您可以运行一些完全不同的任务,代码仍会运行)
从gradle开始时,这通常不明显,如果这让人感到困惑,我建议阅读
有了它,下面的build.gradle:
导入groovy.xml*
任务生成器PublicXML{
多拉斯特{
文件(“public.xml”)。withWriter{writer->
//创建具有4个空格缩进的MarkupBuilder
def xml=new MarkupBuilder(新缩进打印机(writer,“,true))
xml.doubleQuotes=true
xml.mkp.xml声明(版本:“1.0”,编码:“utf-8”)
resources('xmlns:tools':'http://schemas.android.com/tools“,”工具:忽略“:”资源名称“){
字符串(名称:“remoteAccessConsumerKey”,“3MVG92mNMNiWvonjPDM9qqaDip0MFl9TGc”)
字符串(名称:'oauthRedirectURI','saleschap:///mobilesdk/detect/oauth/done')
“字符串数组”(名称:“oauthScopes”){
项目('api')
项目(“web”)
项目('refresh_token')
}
字符串(名称:“androidPushNotificationClientId”)
//留下文件注释
mkp.收益率('\n')
mkp.comment(“自动生成的文件。请勿修改。public.xml由generatepublicxml gradle任务生成”)
}
}
}
}
运行时:
~> gradle generatepublicxml
BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
结果如下public.xml
:
3MVG92MNIWVONJPDM9QQADIP0MFL9TGC
saleschap:///mobilesdk/detect/oauth/done
应用程序编程接口
网状物
刷新令牌
如果不希望resources
元素上的xmlns
属性等,可以执行以下操作:
xml.resources{
...
}
其结果是:
<?xml version="1.0" encoding="utf-8"?>
<resources>
...
...