|
|
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть xml-файл с такой структурой: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. В зависимости от содержимого элемента <third>, нужно вывести всё содержимое <second>, в т.ч. и вложенные элементы. Т.е. если переменная String abc="one", то "one" разыскивается в тегах <third> и где найдена, там выводится всё содержимое тега <second> вместе с дочерними элементами. Вытащить из xml-ля содержимое одного тега можно таким образом NodeList children = element.getElementsByTagName("third"), но как узнать какой именно тег <third> нужно взять, в зависимости от его содержимого и как вытащить вместе с ним и родительский элемент, есть ли для этого стандартный метод в dom4j ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2013, 15:22:46 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
Метод получения родительского элемента сложно не найти http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/Node.html#getParent%28%29 Сам вопрос не очень понял. Либо используйте xpath для сложного поиска. Либо перебирайте ноды, анализируйте содержимое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2013, 22:10:52 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
BlazkowiczСам вопрос не очень понял. Ну, суть в том, что программа анализирует содержимое тега <third> на наличие какого-то слова, если находит, например, слово "five", то выводит на экран всю ветку, включая родительский элемент Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2013, 23:19:24 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
И в чем конкретно проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2013, 23:47:12 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
BlazkowiczИ в чем конкретно проблема? В общем, я нахожу слово "five", теперь мне нужно вывести элемент, в котором я его нашел и его родительский элемент, вот так Код: xml 1. 2. 3. 4. 5. 6. 7. Проблема в том, что я не знаю, как найдя слово "five", потом подобраться к тегу <third>, в котором оно содержится и вывести именно тот тег <third>, в содержимом которого есть слово "five" и его родительский элемент <second>, а не просто все теги <third>, которые есть в документе xml. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 00:10:54 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
alexey94Проблема в том, что я не знаю, как найдя слово "five", потом подобраться к тегу <third>, в котором оно содержится и вывести именно тот тег <third>, в содержимом которого есть слово "five" и его родительский элемент <second>, а не просто все теги <third>, которые есть в документе xml. В чем сложность. Перебором находим элемент, у которого нет дочерних элеметов. Читаем его textContent. Если в textContent имеется искомое слово и это "third". То это наш элемент. Это так трудно запрограммировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 11:08:28 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
dom4j - это требование ? Если нет - можно попробовать использовать Jaxb, представив ноды xml в виде объектов, а дальше циклом перебирать их... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 11:09:14 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
alexander00513dom4j - это требование ? Если нет - можно попробовать использовать Jaxb, представив ноды xml в виде объектов, а дальше циклом перебирать их... Цикл хорош только в простейших случаях. Если автору нужно оглядываться назад на несколько тегов или наоборот смотреть вперёд то решение с циклом будет весьма сложно и чревато ошибками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 13:45:26 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
Согласен.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 13:58:00 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
Blazkowiczalexey94Проблема в том, что я не знаю, как найдя слово "five", потом подобраться к тегу <third>, в котором оно содержится и вывести именно тот тег <third>, в содержимом которого есть слово "five" и его родительский элемент <second>, а не просто все теги <third>, которые есть в документе xml. В чем сложность. Перебором находим элемент, у которого нет дочерних элеметов. Читаем его textContent. Если в textContent имеется искомое слово и это "third". То это наш элемент. Это так трудно запрограммировать? Спасибо, попробую так сделать. Запрограммировать то не сложно, а вот додуматься да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2013, 20:00:16 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
Я сделал вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Он выводит четыре пустых закрытых тега Код: xml 1. А когда сделал вот так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Выводит Код: xml 1. А как сделать так, чтобы он выводит текст вместе с тегами, хотя бы с теми, в которые этот текст заключен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2013, 14:56:30 |
|
||
|
Работа с библиотекой Dom4j
|
|||
|---|---|---|---|
|
#18+
В дебаге посмотрите. Элементы List это Node. У Node можно вызвать соответствующие методы и получить содержимой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2013, 15:21:08 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38117189&tid=2130146]: |
0ms |
get settings: |
17ms |
get forum list: |
31ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
68ms |
get topic data: |
25ms |
get forum data: |
6ms |
get page messages: |
109ms |
get tp. blocked users: |
4ms |
| others: | 321ms |
| total: | 597ms |

| 0 / 0 |
