2015-04-13 2 views
0

У меня есть два XMLs (Queries.xml и EnvVar.xml) первый XML содержит всю мою SQL запросы моего второго XML содержит переменный paramerters/окружающую среду и т.д.,Чтение значения из одного XML в другие

в запросах. 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; 

} 
+0

Основываясь на какой кодировке? Какой результат вы планируете создать? –

+0

Насколько я понял, вы создаете sql-запросы в XML-файле. Вместо того, чтобы разбирать его, почему вы не используете StringTokenizer? –

+0

@MaciejLos: Как я уже говорил, я могу прочитать то, что находится внутри тега Sql1, используя вышеуказанный код Java, я хочу, чтобы мой конечный результат был следующим: Выберите * из таблицы, в которой год (2014,2015) – Vinod

ответ

0

Я предлагаю вам изменить Queries.xml к:

<Queries> <Sql1> Select * from table Where Year in(@[email protected]) </Sql1> </Queries> 

Тогда, когда у вас есть в EnvVar.xml:

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

Промоссылка Year так попытайтесь найти '@'+Tag.Name+'@' или '@[email protected]' в Queries.xml теге -value -или строку запроса и заменить ее на EnvVar.xml tag-valu e -здесь если 2014,2015 -.


Ваш ReportQuery метод с небольшими изменениями может быть новый метод для получения тега-значение EnvVar.xml файла с именем, как ReportWhereClues.

Теперь перед return HTMLGlobalParameters; линией в ReportQuery вы можете проверить HTMLGlobalParameters, что есть какая-то часть его, как @[email protected], и с помощью ReportWhereClues с аргументом, который является строкой между этими @ вы можете получить тег-значение, как 2014,2015, сейчас замените @[email protected] на это значение тега.

+0

Извините, что я новичок в java/xml, функция, о которой я упоминал «ReportQuery», читает, что внутри тега Sql1 в Queries.xml, сообщите, что изменилось предлагают. – Vinod

+0

@ Vinod Я не могу дать вам код прямо сейчас, но я предлагаю вам попытаться понять решение и попытаться сам его закодировать. Я добавлю код в следующий раз, я должен уйти! ;). –

+0

попробовал что-то подобное с вашим советом, это сработало, спасибо. – Vinod

Смежные вопросы