powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / XML Config
16 сообщений из 16, страница 1 из 1
XML Config
    #39274020
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Имеется конфиг такого плана:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<configuration>
   <param1>один какой-то параметр</param1>
   <param2>другой какой-то параметр</param2>
   <entries>
      <entry>
         <position>1</position>
         <name>имя1</name>
         <title>Заголовок1</title>
      </entry>
      <entry>
         <position>2</position>
         <name>имя2</name>
         <title>Заголовок2</title>
      </entry>
   </entries>
</configuration>



Чем лучше читать такое? Смотрел Commons Configuration , но не понял как его "готовить" в подобных случаях. Может что-то посоветуете?
...
Рейтинг: 0 / 0
XML Config
    #39274040
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно так XStream
...
Рейтинг: 0 / 0
XML Config
    #39274041
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garrick,
ты его читай только когда нужно = встал на нужную ноду и прочитал параметр.
А перекладывать из файла в оперативку\классы нафиг надо.
...
Тогда ответ - любым XML парсером.
...
Рейтинг: 0 / 0
XML Config
    #39274077
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я этот xml и без всякой проги прочитать могу
...
Рейтинг: 0 / 0
XML Config
    #39274090
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паша01Я этот xml и без всякой проги прочитать могу
давай, только вслух
...
Рейтинг: 0 / 0
XML Config
    #39274187
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
))))
...
Рейтинг: 0 / 0
XML Config
    #39274201
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
groovy

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
String s='''<configuration>
   <param1>один какой-то параметр</param1>
   <param2>другой какой-то параметр</param2>
   <entries>
      <entry>
         <position>1</position>
         <name>имя1</name>
         <title>Заголовок1</title>
      </entry>
      <entry>
         <position>2</position>
         <name>имя2</name>
         <title>Заголовок2</title>
      </entry>
   </entries>
</configuration>'''

groovy.util.Node cfg=new groovy.util.XmlParser().parseText(s)

println cfg.param1.text()
println cfg.entries.entry.find{ it.name.text()=='имя2' }?.title?.text()
...
Рейтинг: 0 / 0
XML Config
    #39274205
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
написано dom

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;
import javax.xml.xpath.XPath;


public class DOM{
    public static Element parse(Object source){
        if(source instanceof String)source=new org.xml.sax.InputSource( new StringReader((String)source) );
        if(source instanceof Reader)source=new org.xml.sax.InputSource((Reader)source);

        javax.xml.parsers.DocumentBuilder builder = javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
        return builder.parse((org.xml.sax.InputSource)source).getDocumentElement();
    }

    public static String xpathString(Element node, String expression){
        XPath xpath = javax.xml.xpath.XPathFactory.newInstance().newXPath();
        return xpath.evaluate( expression, node, javax.xml.xpath.XPathConstants.STRING );
    }

    public static NodeList xpathNodes(Element node, String expression){
        XPath xpath = javax.xml.xpath.XPathFactory.newInstance().newXPath();
        return xpath.evaluate(expression, node, javax.xml.xpath.XPathConstants.NODESET);
    }
}


String s='''<configuration>
   <param1>один какой-то параметр</param1>
   <param2>другой какой-то параметр</param2>
   <entries>
      <entry>
         <position>1</position>
         <name>имя1</name>
         <title>Заголовок1</title>
      </entry>
      <entry>
         <position>2</position>
         <name>имя2</name>
         <title>Заголовок2</title>
      </entry>
   </entries>
</configuration>''';

Element e = DOM.parse(s);
System.out.println( DOM.xpathString(e,"/configuration/param2") );
System.out.println( DOM.xpathString(e,"/configuration/entries/entry[name='имя2']/title") );
...
Рейтинг: 0 / 0
XML Config
    #39274286
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А получить <entries> в виде какой-нибудь коллекции?
...
Рейтинг: 0 / 0
XML Config
    #39274289
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickА получить <entries> в виде какой-нибудь коллекции?
А потом её синхронизировать с файлом двумя кешами как хибер.
...
Рейтинг: 0 / 0
XML Config
    #39274297
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
NodeList entries = DOM.xpathNodes(e,"/configuration/entries/entry")
System.out.println( "count="+entries.getLength() );
for(int i=0;i<entries.getLength();i++){
    System.out.println( "entry="+entries.item(i) );
}
...
Рейтинг: 0 / 0
XML Config
    #39276158
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry., спасибо.

Поковырял, попробовал всякие модные штуки... и в итоге всё сделал с помощью старого, доброго DOM парсера.
...
Рейтинг: 0 / 0
XML Config
    #39276342
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickDmitry., спасибо.
Поковырял, попробовал всякие модные штуки... и в итоге всё сделал с помощью старого, доброго DOM парсера.
+1
...
Рейтинг: 0 / 0
XML Config
    #39304556
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И снова "здравствуйте".
Поступила новая вводная - добавить в XML конфигурацию переменные, например, как в maven {$....} в pom.xml. Пока только для того, чтобы туда можно было указать имя файла типа - file-{$mmDDyyyy}.out. Чтобы автоматом в имя файла подставлялась "дата изготовления" в указанном формате. Потом возможно и другое, более расширенное, применение. Не подскажите ли, может быть есть какие-то готовые решения для подобных случаев?
...
Рейтинг: 0 / 0
XML Config
    #39304591
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам спросил - сам отвечу
Apache Commons JEXL
...
Рейтинг: 0 / 0
XML Config
    #39304857
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickСам спросил - сам отвечу
Apache Commons JEXL

Хоть и решает поставленную задачу, но не совсем то, что хотелось. Вместо
Код: xml
1.
<filename>report-{$ddMMyyyHHmm}.xlsx</filename>

надо писать
Код: xml
1.
<filename>"report-"+new("java.text.SimpleDateFormat", "ddMMyyyyHHmm").format(new("java.util.Date"))+".xlsx"</filename>


Для конечного пользователя конструкция не понятная, но как упростить пока не нашел.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / XML Config
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]