我有两个XML(Queries.xml和EnvVar.xml),第一个xml包含我的所有SQL查询,第二个xml包含参数/环境变量等。
在Queries.xml中,每个查询都在一个标记内,现在我想从EnvVar.xml读取条件的查询中的WHERE子句,例如Select * from table WHERE Year in(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;
}
答案 0 :(得分:0)
我建议您将Queries.xml
更改为:
<Queries> <Sql1> Select * from table Where Year in(@Year@) </Sql1> </Queries>
然后当你进入EnvVar.xml
:
<Parameters><Year>2014,2015</Year></Parameters>
您的代码为Year
,因此请尝试在'@'+Tag.Name+'@'
代码中找到'@Year@'
或Queries.xml
- 或查询字符串 - 并将其替换为EnvVar.xml
tag-value -here if 2014,2015
- 。
您的ReportQuery
方法稍加更改可能是获取EnvVar.xml
文件的标记值的新方法,其名称为ReportWhereClues
。
return HTMLGlobalParameters;
前ReportQuery
行前HTMLGlobalParameters
,您可以检查@...@
是否有ReportWhereClues
的任何部分,并使用@
2014,2015
的参数是@...@
之间的字符串,您可以获取标记值{{1}},现在将{{1}}替换为该标记值。