将值从外部属性文件读入XML文件

时间:2019-06-14 12:46:33

标签: xml

我想将外部属性文件中的值读入XML。 说:我在属性文件中有名字和姓氏,我想在我的XML文件中读取它们。

尝试使用doctype但没有运气

<!DOCTYPE project SYSTEM "">
<project name="My Project" default="D:/Apache24/htdocs/">
<property file="build.properties"/>
      <!-- set global properties -->
      <property name="FirstName" value="first"/>
      <property name="LastName" value="last"/>
         <echo message = "First name is = ${FirstName}"/><echo message ="Last name is ${Last Name}"/></target>
   </project>

执行时显示相同的XML

1 个答案:

答案 0 :(得分:0)

不使用其他XML处理工具而仅使用XML可获得的最接近的结果是使用 entities ,这是XML的文本替换变量机制:

<!DOCTYPE project [
  <!ENTITY FirstName "first">
  <!ENTITY LastName "last">
]>
<project name="My Project">
  <property name="FirstName" value="&first;"/>
  <property name="LastName" value="&last;"/>
</project>

您也可以将实体存储在外部文件中

<!-- myproperties.dtd -->
<!ENTITY FirstName "first">
<!ENTITY LastName "last">

然后将其包含在您的主文件中,如下所示:

<!DOCTYPE project SYSTEM "myproperties.dtd">
<project name="My Project">
  <property name="FirstName" value="&first;"/>
  <property name="LastName" value="&last;"/>
</project>

您还可以通过使外部myproperties.dtd包含通用的globalproperties.dtd来进一步组织外部item=value文件(或您选择的名称),然后仅声明特定于项目的实体,或覆盖全局属性/实体等

另请参阅XML configuration inheritance, avoid duplications

SGML(基于XML的)具有“短引用”,您可以使用“短引用”以常规语法实际解析属性文件(或许多其他类型的自定义文本文件格式)。包含{{1}}对的行。但是,您将无法使用该技术为实体分配值,因为短引用(= SGML用标签或其他文本替换的自定义字符序列)只能在内容中识别,而不能在DOCTYPE声明中识别。