Как указать, какой синтаксический анализатор использовать - PullRequest
5 голосов
/ 23 февраля 2011

В пути к классам у меня есть синтаксический анализатор woodstox и java SE 1.6, но кажется, что woodstox выбран по умолчанию.Однако в некоторых случаях я хотел бы использовать стандартный синтаксический анализатор Java.Есть ли способ указать, какую реализацию использовать?

Ответы [ 2 ]

7 голосов
/ 23 февраля 2011

Самый простой способ - просто создать экземпляр того, что вы хотите - вам не нужно использовать XMLInputFactory.newInstance();для Woodstox вы должны создать экземпляр com.ctc.wstx.stax.WstxInputFactory.Для реализации Sun это нечто иное (com.sun.sjsxp или что-то подобное) - вы можете увидеть имя класса, если создадите его через Stax API, когда jar Woodstox не находится в classpath.

Но если вы абсолютно хотитеиспользуйте косвенное обращение, используется значение системного свойства "javax.xml.stream.XMLInputFactory", как указано в javadocs: значение - это имя класса для создания экземпляра.

0 голосов
/ 16 августа 2012

У меня была похожая проблема, у моего локального jboss в пути есть woodstox, а на удаленном сервере нет (или что-то неправильно настроено). Поэтому я решил создать экземпляр эталонной реализации:

        // Use BEA streaming parser to avoid runtime exceptions
        XMLOutputFactory xmlof = new XMLOutputFactoryBase();
...