Java 将值从一个XML读入另一个XML
我有两个xml(querys.xml和EnvVar.xml)第一个xml包含所有SQL查询第二个xml包含参数/环境变量等 在querys.xml中,每个查询都在一个标记内,现在对于查询中的WHERE子句,我想从EnvVar.xml中读取条件,例如,从表WHERE Year In(20142015)中选择*。。。(20142015)来自EnvVar.xml querys.xml如下所示:Java 将值从一个XML读入另一个XML,java,sql,xml,xslt,xml-parsing,Java,Sql,Xml,Xslt,Xml Parsing,我有两个xml(querys.xml和EnvVar.xml)第一个xml包含所有SQL查询第二个xml包含参数/环境变量等 在querys.xml中,每个查询都在一个标记内,现在对于查询中的WHERE子句,我想从EnvVar.xml中读取条件,例如,从表WHERE Year In(20142015)中选择*。。。(20142015)来自EnvVar.xml querys.xml如下所示: <Queries> <Sql1> Select * from table Where
<Queries> <Sql1> Select * from table Where Year in() </Sql1> </Queries>
<Parameters><Year>2014,2015</Year></Parameters>
从表中选择*年()
EnvVar.xml如下所示:
<Queries> <Sql1> Select * from table Where Year in() </Sql1> </Queries>
<Parameters><Year>2014,2015</Year></Parameters>
20142015
通过下面的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;
}
publicstaticstringreportquery(stringtagvalue){
字符串HTMLGlobalParameters=null;
试试{
URL=Test.class.getClassLoader().getResource(“querys.xml”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(url.getPath());
doc.getDocumentElement().normalize();
NodeList nList=doc.getElementsByTagName(“查询”);
对于(int-temp=0;temp
我建议您将querys.xml
更改为:
<Queries> <Sql1> Select * from table Where Year in(@Year@) </Sql1> </Queries>
您的标记是Year
,因此,如果20142015
,请尝试在querys.xml
中查找'@'+tag.Name+'@'
或'@Year@
标记值-或您的查询字符串-并将其替换为EnvVar.xml
标记值
您的
ReportQuery
方法稍加修改,就可以成为一种新的方法,用于获取名为reportwhere
的EnvVar.xml
文件的标记值
现在在返回HTMLGlobalParameters之前在ReportQuery
中,您可以检查HTMLGlobalParameters
中是否存在类似@…
的任何部分,并使用
ReportWhereClues
如果参数是这些@
之间的字符串,您可以获得标签值,如20142015
,现在将@…
替换为该标签值。基于什么编码?您希望创建什么输出?据我所知,您在xml文件中创建sql查询。与其解析它,为什么不使用StringTokenizer?@MaciejLos:正如我所提到的,我能够使用上述java代码读取Sql1标记中的内容,我希望我的最终输出为:从表中选择*年(20142015)中关于“基于什么条件?”的问题仍然有效。我看不到sql查询与其参数之间有任何关系…@MaciejLos:如果您指的是“将年份值从EnvVar发送到查询”的条件。。。如果我回答了您的问题,请告诉我。对不起,我对java/xml不熟悉,我提到的“ReportQuery”函数读取querys.xml中Sql1标记内的内容。请告诉我您建议的更改。@Vinod我现在无法提供代码,但我建议您尝试理解解决方案,并尝试自己编写代码。我将在下次添加代码,我必须去!;)。