Я совсем не знаком с API-интерфейсами Matlab, но я хотел бы отметить, что использование метода DOM, описанного в Pursuit, займет больше времени / памяти, если вы хотите, чтобы только определенные значения из потока XML возвращались через HTTP-соединение.
Хотя STAX обеспечит вам самый быстрый подход к анализу в Java, использование API может быть громоздким, особенно если вы не очень знакомы с Java. Вы можете использовать SJXP , который является чрезвычайно тонкой абстракцией синтаксического анализа STAX в Java (отказ от ответственности: я автор), который позволяет вам определять пути к нужным элементам, а затем выдает парсеру поток ( ваш поток HTTP в этом случае), и он вытягивает все значения для вас.
В качестве примера, допустим, что вы хотели получить значения / root / state и / root / volume из примеров XML, которые вы разместили, фактическая Java будет выглядеть примерно так:
// Create /root/state rule
IRule stateRule = new DefaultRule(Type.CHARACTER, "/root/state") {
@Override
public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
System.out.println("State is: " + text);
}
}
// Create /root/volume rule
IRule volRule = new DefaultRule(Type.CHARACTER, "/state/volume") {
@Override
public void handleParsedCharacters(XMLParser parser, String text, Object userObject) {
System.out.println("Volume is: " + text);
}
}
// Create the parser with the given rules
XMLParser parser = new XMLParser(stateRule, volRule);
Вы можете выполнить всю эту инициализацию при запуске программы, а через некоторое время, когда вы обрабатываете поток из HTTP-соединения, вы можете сделать что-то вроде:
parser.parser(httpConnection.getOutputStream());
или т.п .; тогда весь код вашего обработчика, который вы определили в своих правилах, будет вызван, когда анализатор будет проходить через поток символов из HTTP-соединения.
Как я уже упоминал, я не знаком с Matlab и не знаю правильных способов "Matlab-i-fy" этого кода, но, похоже, из первого примера вы можете более или менее просто использовать Java API напрямую в этом случае это решение будет быстрее и будет использовать значительно меньше памяти для анализа, если это важно, чем подход DOM.