XmlProperty

描述

从格式良好的 XML 文件加载属性值。除了“格式良好”之外,没有其他限制。您可以选择所需的布局。例如,此 XML 属性文件

  <root>
    <properties>
      <foo>bar</foo>
    </properties>
  </root>

大致等同于此 Java 属性文件

root.properties.foo = bar

默认情况下,此加载不会对输入进行任何处理。特别是,与 Property 任务 不同,属性引用(即 ${foo})不会被解析。

语义属性

可以使用 semanticAttributes 属性启用输入处理。如果此属性设置为 true(其默认值为 false),则在加载输入 XML 文件时会执行以下处理:/p>

例如,在启用语义属性处理的情况下,此 XML 属性文件

<root>
  <properties>
    <foo location="bar"/>
    <quux>${root.properties.foo}</quux>
  </properties>
</root>

大致等同于 build.xml 文件中的以下片段

<property name="root.properties.foo" location="bar"/>
<property name="root.properties.quux" value="${root.properties.foo}"/>

参数

属性 描述 必需
file 要解析的 XML 文件。 是,或嵌套的资源集合
prefix 要附加到每个属性的前缀。
keepRoot 保留 XML 根标签作为属性名称中的第一个值。 否;默认值为 true
validate 验证输入文件(例如,通过 DTD)。否则,XML 必须仅格式良好。 否;默认值为 false
collapseAttributes 将属性视为嵌套元素。 否;默认值为 false
semanticAttributes 启用对某些属性名称的特殊处理。有关更多信息,请参阅 语义属性 部分。 否;默认值为 false
includeSemanticAttribute 将语义属性名称作为属性名称的一部分包含在内。如果 semanticAttributes 未设置为 true,则忽略。有关更多信息,请参阅 语义属性 部分。 否;默认值为 false
rootDirectory 用于解析文件引用的目录。如果 semanticAttributes 未设置为 true,则忽略。 否;默认值为 basedir
delimiter 用于拆分多个值的定界符。
自 Apache Ant 1.7.1 起
否;默认值为 ,(逗号)

作为嵌套元素指定的参数

xmlcatalog

<xmlcatalog> 元素用于执行实体解析。

任何 资源 或单个元素资源集合

指定的资源将用作输入。

示例

非语义属性

以下是一个没有语义属性的 XML 文件示例。

<root-tag myattr="true">
  <inner-tag someattr="val">Text</inner-tag>
  <a2><a3><a4>false</a4></a3></a2>
</root-tag>
默认加载

构建文件中的此条目

<xmlproperty file="somefile.xml"/>

等同于以下属性

root-tag(myattr)=true
root-tag.inner-tag=Text
root-tag.inner-tag(someattr)=val
root-tag.a2.a3.a4=false
collapseAttributes=false

构建文件中的此条目

<xmlproperty file="somefile.xml" collapseAttributes="true"/>

等同于以下属性

root-tag.myattr=true
root-tag.inner-tag=Text
root-tag.inner-tag.someatt=val
root-tag.a2.a3.a4=false
keepRoot=false

构建文件中的此条目

<xmlproperty file="somefile.xml" keepRoot="false"/>

等同于以下属性

inner-tag=Text
inner-tag(someattr)=val
a2.a3.a4=false

语义属性

以下是一个具有语义属性的 XML 文件示例。

<root-tag>
  <version value="0.0.1"/>
  <build folder="build">
    <classes id="build.classes" location="${build.folder}/classes"/>
    <reference refid="build.classes"/>
  </build>
  <compile>
    <classpath pathid="compile.classpath">
      <pathelement location="${build.classes}"/>
    </classpath>
  </compile>
  <run-time>
    <jars>*.jar</jars>
    <classpath pathid="run-time.classpath">
      <path refid="compile.classpath"/>
      <pathelement path="${run-time.jars}"/>
    </classpath>
  </run-time>
</root-tag>
默认加载 (semanticAttributes=true)

构建文件中的此条目

<xmlproperty file="somefile.xml" keepRoot="false"
             semanticAttributes="true"/>

等同于构建文件中的以下条目

<property name="version" value="0.0.1"/>
<property name="build.folder" value="build"/>
<property name="build.classes" location="${build.folder}/classes" id="build.classes"/>
<property name="build.reference" refid="build.classes"/>

<property name="run-time.jars" value="*.jar"/>

<path id="compile.classpath">
  <pathelement location="${build.classes}"/>
</path>

<path id="run-time.classpath">
  <path refid="compile.classpath"/>
  <pathelement path="${run-time.jars}"/>
</path>
includeSemanticAttribute=true

构建文件中的此条目

<xmlproperty file="somefile.xml"
             semanticAttributes="true" keepRoot="false"
             includeSemanticAttribute="true"/>

等同于构建文件中的以下条目

<property name="version.value" value="0.0.1"/>
<property name="build.folder" value="build"/>
<property name="build.classes.location" location="${build.folder}/classes"/>
<property name="build.reference.refid" refid="build.classes"/>

<property name="run-time.jars" value="*.jar"/>

<path id="compile.classpath">
  <pathelement location="${build.classes}"/>
</path>

<path id="run-time.classpath">
  <path refid="compile.classpath"/>
  <pathelement path="${run-time.jars}"/>
</path>