Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Gradle脚本:如何在XML文件中创建和写入数据_Android_Xml_Gradle_Groovy_Build.gradle - Fatal编程技术网

Android Gradle脚本:如何在XML文件中创建和写入数据

Android 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

我正在创建xml,通过使用gradle脚本并在xml文件中写入一些数据。我已经创建了.gradle文件,在运行gradle文件之后,我无法获得xml文件的确切格式。我将我的代码张贴在下面:请任何人指导我。 导入groovy.xml.MarkupBuilder

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>
   ...

...