我想将外部属性文件中的值读入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
答案 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声明中识别。