【发布时间】:2015-04-13 05:43:06
【问题描述】:
我有两个 XML(Queries.xml 和 EnvVar.xml),第一个 xml 包含我的所有 SQL 查询,第二个 xml 包含参数/环境变量等,
在 Queries.xml 中,每个查询都在一个标签内,现在对于查询中的 WHERE 子句,我想从 EnvVar.xml 中读取条件,例如 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;
}
【问题讨论】:
-
基于什么条件?您希望创建什么输出?
-
据我了解,您在 xml 文件中创建 sql 查询。而不是解析它,为什么不使用 StringTokenizer ?
-
@MaciejLos:正如我所提到的,我可以使用上面的 java 代码读取 Sql1 标记内的内容,我希望我的最终输出为:Select * from table where year in (2014,2015)跨度>
-
关于“基于什么条件?”的问题仍然活跃。我没有看到 sql 查询与其参数之间有任何关系...
-
@MaciejLos:如果您指的是“将年份值从 EnvVar 发送到查询”的条件......那么它没有任何条件,对我来说,年份是在其他查询中使用的参数好吧,如果我回答了你的问题,请告诉我
标签: java sql xml xslt xml-parsing