从一个 XML 读取值到另一个
Reading value from one XML to another
我有两个 XML(Queries.xml 和 EnvVar.xml),第一个 xml 包含我所有的 SQL 查询,第二个 xml 包含 paramerters/environment变量等,
在 Queries.xml 中,每个查询都在一个标记内,现在对于查询中的 WHERE 子句,我想从 EnvVar.xml 中读取条件,例如 Select * 来自 table WHERE 年份 (2014,2015)... (2014,2015) 来自 EnvVar.xml
Queries.xml如下:
<Queries> <Sql1> Select * from table Where Year in() </Sql1> </Queries>
EnvVar.xml如下:
<Parameters><Year>2014,2015</Year></Parameters>
使用下面的 Java 代码我可以读取 Sql1 中的内容有没有办法将年份值从 EnvVar 发送到查询?
public static String ReportQuery(String TagValue){
String HTMLGlobalParameters=null;
try {
URL url = Test.class.getClassLoader().getResource("Queries.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(url.getPath());
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("Queries");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
HTMLGlobalParameters = getTagValue(TagValue, eElement);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return HTMLGlobalParameters;
}
我建议您将 Queries.xml
更改为:
<Queries> <Sql1> Select * from table Where Year in(@Year@) </Sql1> </Queries>
然后当你在 EnvVar.xml
:
<Parameters><Year>2014,2015</Year></Parameters>
您的标签是 Year
,因此尝试在 Queries.xml
标签值 - 或您的查询字符串 - 中找到 '@'+Tag.Name+'@'
或 '@Year@'
并将其替换为 EnvVar.xml
tag-value -here if 2014,2015
-.
您的 ReportQuery
方法稍作改动即可成为获取 EnvVar.xml
文件标签值的新方法,其名称类似于 ReportWhereClues
.
现在,在 ReportQuery
中的 return HTMLGlobalParameters;
行之前,您可以检查 HTMLGlobalParameters
是否有任何部分像 @...@
,并通过使用
ReportWhereClues
的参数是那些 @
之间的字符串,您可以获得像 2014,2015
这样的标签值,现在将 @...@
替换为该标签值。
我有两个 XML(Queries.xml 和 EnvVar.xml),第一个 xml 包含我所有的 SQL 查询,第二个 xml 包含 paramerters/environment变量等,
在 Queries.xml 中,每个查询都在一个标记内,现在对于查询中的 WHERE 子句,我想从 EnvVar.xml 中读取条件,例如 Select * 来自 table WHERE 年份 (2014,2015)... (2014,2015) 来自 EnvVar.xml
Queries.xml如下:
<Queries> <Sql1> Select * from table Where Year in() </Sql1> </Queries>
EnvVar.xml如下:
<Parameters><Year>2014,2015</Year></Parameters>
使用下面的 Java 代码我可以读取 Sql1 中的内容有没有办法将年份值从 EnvVar 发送到查询?
public static String ReportQuery(String TagValue){
String HTMLGlobalParameters=null;
try {
URL url = Test.class.getClassLoader().getResource("Queries.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(url.getPath());
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("Queries");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
HTMLGlobalParameters = getTagValue(TagValue, eElement);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return HTMLGlobalParameters;
}
我建议您将 Queries.xml
更改为:
<Queries> <Sql1> Select * from table Where Year in(@Year@) </Sql1> </Queries>
然后当你在 EnvVar.xml
:
<Parameters><Year>2014,2015</Year></Parameters>
您的标签是 Year
,因此尝试在 Queries.xml
标签值 - 或您的查询字符串 - 中找到 '@'+Tag.Name+'@'
或 '@Year@'
并将其替换为 EnvVar.xml
tag-value -here if 2014,2015
-.
您的 ReportQuery
方法稍作改动即可成为获取 EnvVar.xml
文件标签值的新方法,其名称类似于 ReportWhereClues
.
现在,在 ReportQuery
中的 return HTMLGlobalParameters;
行之前,您可以检查 HTMLGlobalParameters
是否有任何部分像 @...@
,并通过使用
ReportWhereClues
的参数是那些 @
之间的字符串,您可以获得像 2014,2015
这样的标签值,现在将 @...@
替换为该标签值。