Я в состоянии, где я использую Java для соединения с портом TCP, и переданные потоком XML-документы один за другим, каждый разграниченный с <?xml
запустите тега документа. Пример, который демонстрирует формат:
<?xml version="1.0"?>
<person>
<name>Fred Bloggs</name>
</person>
<?xml version="1.0"?>
<person>
<name>Peter Jones</name>
</person>
Я использую org.xml.sax.*
API. Парсинг SAX работает отлично на первый документ, но выдает исключение, когда это сталкивается с запуском второго документа:
Exception in thread "main" org.xml.sax.SAXParseException: The processing instruction
target matching "[xX][mM][lL]" is not allowed.
Следующий скелетный класс демонстрирует установку, которую я использую:
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
import java.io.FileReader;
public class XMLTest extends DefaultHandler {
public XMLTest() {
super();
}
public static void main(String[] args) throws Exception {
XMLReader xr = XMLReaderFactory.createXMLReader();
XMLTest handler = new XMLTest();
xr.setContentHandler(handler);
xr.setErrorHandler(handler);
xr.parse(new InputSource(new Socket("127.0.0.1", 4555).getInputStream()));
}
}
Я не имею никакого контроля над форматом xml (это - канал финансовых данных), но я должен смочь проанализировать его эффективно и проанализировать все документы. Я провел день/вечер, пробуя разные вещи, но ни один не привел к результатам. Любая справка значительно ценилась бы.