Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / xpath получение всех namespace-ов / 5 сообщений из 5, страница 1 из 1
03.11.2017, 20:30
    #39547641
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xpath получение всех namespace-ов
Пытаюсь получить все namespace у данного xml:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public static void main(String[] args) throws XPathExpressionException, ParserConfigurationException, SAXException, IOException  {
        
        String input = "<myns:root "
                + "xmlns:xsi=\"xsi.com\" "
                + "xmlns:myns=\"myns.com\">\n"
                + "123123"
                + "</myns:root>";

        InputSource source = new InputSource(new StringReader(input));
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document document = db.parse(source);
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();

        String result = xpath.evaluate("//namespace::*", document);

        System.out.println(result);
    }


но мне выводит только первый xsi.com. Как можно получить все?
...
Рейтинг: 0 / 0
03.11.2017, 21:31
    #39547660
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xpath получение всех namespace-ов
Javadoc говорит, что есть еще такой метод:

Код: plaintext
1.
2.
3.
4.
5.
6.
Object evaluate(String expression,
                Object item,
                QName returnType)
         throws XPathExpressionException

Evaluate an XPath expression in the specified context and return the result as the specified type.
...

returnType можно указать как XPathConstants.NODESET и, наверное, получить набор узлов. Сам не делал.
...
Рейтинг: 0 / 0
03.11.2017, 23:45
    #39547698
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xpath получение всех namespace-ов
sanringoПытаюсь получить все namespace у данного xml:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public static void main(String[] args) throws XPathExpressionException, ParserConfigurationException, SAXException, IOException  {
        
        String input = "<myns:root "
                + "xmlns:xsi=\"xsi.com\" "
                + "xmlns:myns=\"myns.com\">\n"
                + "123123"
                + "</myns:root>";

        InputSource source = new InputSource(new StringReader(input));
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document document = db.parse(source);
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();

        String result = xpath.evaluate("//namespace::*", document);

        System.out.println(result);
    }


но мне выводит только первый xsi.com. Как можно получить все?
Почему String ? Это же единственное значение
Код: java
1.
String result = xpath.evaluate("//namespace::*", document);


Где array of namespaces?

Если прогнять через xlst то этот xpath возвращает все namespace в документе
...
Рейтинг: 0 / 0
04.11.2017, 10:32
    #39547730
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xpath получение всех namespace-ов
lleming,

Не совсем понял как мне поменять код
...
Рейтинг: 0 / 0
04.11.2017, 11:43
    #39547745
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xpath получение всех namespace-ов
Намекаю еще прозрачнее.


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
      
        //String result = xpath.evaluate("//namespace::*", document);

        //System.out.println(result);

        NodeList result = (NodeList)xpath.evaluate("//namespace::*", document, XPathConstants.NODESET);

        System.out.println(result.getLength());
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / xpath получение всех namespace-ов / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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