Я видел несколько вопросов, связанных с разбором xmls, используя woodstox и JAXB, чтобы развязать с помощью XMLStreamReader
и проверить на соответствие схемам. Чтение, хотя они не помогли. Мне нужно проверять входящий XML-адрес с локальным DTD и анализировать все содержимое в представлении объекта. Входящий xml может иметь DOCTYPE, который включает DTD. Это нужно пропустить, и вместо этого необходимо использовать локальное DTD. Реализация должна быть очень быстрой. Ожидаемый < 1 мс для проверки и разбора. Я мог бы разобрать один раз, используя следующее за 5 мс. Включение проверки не работает с настройкой схемы (с комментариями строк кода)Проверить и проанализировать xml с помощью woodstox с локальным dtd
xmlif = XMLInputFactory2.newInstance();
xmlif.setProperty(XMLInputFactory2.SUPPORT_DTD, false);
JAXBContext ucontext;
ucontext = JAXBContext.newInstance(XMLOuterElementClass.class);
unmarshaller = ucontext.createUnmarshaller();
/*SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.XML_DTD_NS_URI);
Schema schema = sf.newSchema(new File("c:/resources/schma.dtd"));
unmarshaller.setSchema(schema);*/
XMLStreamReader xsr = xmlif
.createXMLStreamReader(new StringReader(xml));
//xsr = new StreamReaderDelegate(xsr);
long start = System.currentTimeMillis();
try {
while (xsr.hasNext()) {
if (xsr.isStartElement()
&& xsr.getLocalName() == "XMLOuterElementClass") {
break;
}
xsr.next();
}
JAXBElement<XMLOuterElementClass> jb = unmarshaller.unmarshal(xsr,
XMLOuterElementClass.class);
System.out.println("Total time taken in ms :" + (end - start));
} finally {
xsr.close();
}
Благодарим за указатель. Попробует список пользователей. Получение времени проверки и разбора до <1 мс кажется практически нецелесообразным. – Ajay
Зависит от размера контента; синтаксический анализ XML может производиться со скоростью 10-40 мегабайт в секунду, в зависимости от парсера. Таким образом, в 1 мс должен быть способен делать документы 10-40 кБ. Но накладные расходы JAXB более проблематичны. Также убедитесь, что ВСЕГДА повторно используйте 'XMLInputFactory' – StaxMan
Хмм, что дает надежду попробовать. Я поделюсь своими выводами, если мне удастся проверить и проанализировать ожидаемые промежутки времени. Кроме того, когда вы говорите, что синтаксический анализ на 1 мс возможен, ожидайте его разбора всего контента, а не только интересующего вас раздела. – Ajay