|
|
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Товарищи, помогите пожалуйста решить задачу. Другу срочно надо. Проблема состоит в следующем: Дан xml документ. <a> <b> <c>value1</c> <d>value2</d> </b> </a> Надо написать программу на java, которая обработает этот документ и найдет в дереве документа value1 или value2. А потом укажет путь к этому значению. Например, если задать такой запрос: c:\java Parser document.xml value2 То ответом будет: a -> b -> d Помогите, пожалуйста! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 16:13 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Используя dom4j можно примерно так: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 17:14 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Спасибо большое. Сейчас установлю dom4j. Еще один вопрос: А можно это сделать посредством Xerces Java Parser ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 17:46 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Думаю, можно, может быть дополнительно следует воспользоваться Xalan - про него на этой странице сказано, что он работает с XSLT. Т.е. нужно разобрать XML, после чего найти в нем все, что соответствует XSLT-шаблону //*[starts-with(., 'value2')] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 18:01 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
на самом деле, достаточно просто получить дерево документа DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); org.w3c.dom.Document domDocument = builder.parse(args[0]); и затем просто обойти все его узлы в поисках нужного текстое node, запоминая текущий путь. думаю с алгоритмом обходом дерева (поиск в глубину) проблем не должно возникнуть... "достаточно" в том смысле, что привлекать понятие xpath вовсе не обязательно, равно как и библиотеки не входящие в состав jdk. хотя согласен, jdom удобная штука :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 19:16 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
NotGonnaGetUsна самом деле, достаточно просто получить дерево документа DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); org.w3c.dom.Document domDocument = builder.parse(args[0]); и затем просто обойти все его узлы в поисках нужного текстое node, запоминая текущий путь. думаю с алгоритмом обходом дерева (поиск в глубину) проблем не должно возникнуть... В том то и дело, что я в этом деле не кумекаю. Можешь, пожалуйста, написать примерно обход "дерева" и как черер java сделать поиск по заданному тексту? Буду премного благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 02:28 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Примерно так Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 10:50 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Thnx to NotGonnaGetUs. Прописываю. Денису Попову: у меня ошибка выходит :( Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/io/DOMReader at TestSearch.main. Из-за чего может быть? Вроде пути к классам правильно указываю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 17:03 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Компилирую так: javac -classpath c:\dom4j\dom4j-1.5.2.jar TestSearch.java Ошибки не выходит. Потом запускаю программу: java TestSearch parser.xml a и потом выходит эта ошибка Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/io/DOMReader at TestSearch.main. Пробовал так запускать: java -cp c:\dom4j\dom4j-1.5.2.jar . TestSearch parser.xml a Тогда выходит ошибка: Exception in thread "main" java.lang.NoClassDefFoundError: TestSearch Что я делаю не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 00:55 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
KamaКомпилирую так: javac -classpath c:\dom4j\dom4j-1.5.2.jar TestSearch.java Ошибки не выходит. Потом запускаю программу: java TestSearch parser.xml a и потом выходит эта ошибка Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/io/DOMReader at TestSearch.main. Пробовал так запускать: java -cp c:\dom4j\dom4j-1.5.2.jar . TestSearch parser.xml a Тогда выходит ошибка: Exception in thread "main" java.lang.NoClassDefFoundError: TestSearch Что я делаю не так? java -cp .;c:\dom4j\dom4j-1.5.2.jar TestSearch parser.xml a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 09:22 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Та ошибка ушла, но появилась новая: Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/JaxenException at org.dom4j.DocumentFactory.createXPath<DocumentFactory.java:196> .. Установил jaxen-1.0-FCS. Компилирую и запускаю программу с заданием пути к jaxen-dom4j.jar, но все равно эта же ошибка выходит. Что за капризы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 11:19 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Kama ... java.lang.NoClassDefFoundError: org/jaxen/JaxenException ... Что за капризы? значит, не ко всем *.jar'ам пути указал. PS совет: забить на dom4j и использовать то, что идет в стандартной поставке PPS за 96 долларов США помогу практически, предоставив готовый продукт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 11:26 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
рантайм машына Kama ... java.lang.NoClassDefFoundError: org/jaxen/JaxenException ... Что за капризы? значит, не ко всем *.jar'ам пути указал. PS совет: забить на dom4j и использовать то, что идет в стандартной поставке PPS за 96 долларов США помогу практически, предоставив готовый продукт странная цифра :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 11:57 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
rimanстранная цифра :) оплата хостинга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 12:00 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
цифропояснитель оплата хостинга хотел бы тоже контекст какой нить в поле афтара забить, только неохота перелогинивацца, так што: "аааа" (понял, типа). 8) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 12:07 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
KamaТа ошибка ушла, но появилась новая: Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/JaxenException at org.dom4j.DocumentFactory.createXPath<DocumentFactory.java:196> .. Установил jaxen-1.0-FCS. Компилирую и запускаю программу с заданием пути к jaxen-dom4j.jar, но все равно эта же ошибка выходит. Что за капризы? Сейчас текущая версия - dom4j-1.5.2. В архиве с SourceForge в том числе есть два файла - dom4j-1.5.2.jar и jaxen-1.1-beta-4.jar. Если для наглядности положить их в тот же каталог, что и класс, то строки компиляции/запуска будут такими: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 13:29 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ, теперь вроде ошибок не дает, но и не находит правильного ответа. Добавляю в условие: if (node.getText().equals(args[1])) { System.out.println(node.getPath()); } код: else {System.out.println("no such word");} В запуске программы пишу: c:\java TestSearch parser.xml 'a' и он выдает, no such word. Хотя в xml файле есть это слово. Вроде условие правильное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 14:09 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
А апострофы вокруг значения зачем? Вот я взял xml из твоего первого письма, обозвал его text.xml, в результате: Код: plaintext 1. 2. То же самое будет, если ты заменишь апострофы на кавычки : Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 14:16 |
|
||
|
задача на Java/XML
|
|||
|---|---|---|---|
|
#18+
Получилось . Спасибо большое, Денис. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 15:00 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2152848]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 485ms |

| 0 / 0 |
