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>