Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将值从一个XML读入另一个XML_Java_Sql_Xml_Xslt_Xml Parsing - Fatal编程技术网

Java 将值从一个XML读入另一个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

我有两个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 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我现在无法提供代码,但我建议您尝试理解解决方案,并尝试自己编写代码。我将在下次添加代码,我必须去!;)。