从一个XML读取值到另一个XML

时间:2015-04-13 05:43:06

标签: java sql xml xslt xml-parsing

我有两个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;

}

1 个答案:

答案 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}}替换为该标记值。