从一个 XML 读取值到另一个

Reading value from one XML to another

我有两个 XML(Queries.xml 和 EnvVar.xml),第一个 xml 包含我所有的 SQL 查询,第二个 xml 包含 paramerters/environment变量等,

在 Queries.xml 中,每个查询都在一个标记内,现在对于查询中的 WHERE 子句,我想从 EnvVar.xml 中读取条件,例如 Select * 来自 table WHERE 年份 (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;

}

我建议您将 Queries.xml 更改为:

<Queries> <Sql1> Select * from table Where Year in(@Year@) </Sql1> </Queries>

然后当你在 EnvVar.xml:

<Parameters><Year>2014,2015</Year></Parameters>

您的标签是 Year,因此尝试在 Queries.xml 标签值 - 或您的查询字符串 - 中找到 '@'+Tag.Name+'@''@Year@' 并将其替换为 EnvVar.xml tag-value -here if 2014,2015-.


您的 ReportQuery 方法稍作改动即可成为获取 EnvVar.xml 文件标签值的新方法,其名称类似于 ReportWhereClues.

现在,在 ReportQuery 中的 return HTMLGlobalParameters; 行之前,您可以检查 HTMLGlobalParameters 是否有任何部分像 @...@,并通过使用 ReportWhereClues 的参数是那些 @ 之间的字符串,您可以获得像 2014,2015 这样的标签值,现在将 @...@ 替换为该标签值。