XML-анализ XML Java

1

Я написал код для извлечения разных частей XML-строки с использованием xpath. Вопрос у меня есть, если строка xml была, например

<event>alarm, red, 2</event>

есть ли простой способ с помощью xpath выбрать слово второго слова в строке после первой запятой, так что "красный"? прямо сейчас я использую

String event = xpath.evaluate("/event", doc);

который возвращает "alarm, red, 2" но все, что я хочу, "red". Я знаю, что я мог бы просто принять событие и использовать подстроку, чтобы извлечь "red" но мне интересно, есть ли способ сделать это, используя xpath, а не подстроку?

код:

String xml = "<event>alarm, red, 2<event>";  

XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();

InputSource source = new InputSource(new StringReader(xml));
Document doc = (Document) xpath.evaluate ("/", source, XPathConstants.NODE);
Теги:
xpath
xml-parsing
string-parsing

2 ответа

2
Лучший ответ

Если вы используете реализацию XPath 2.0, вы можете использовать tokenize и использовать регулярное выражение для разделения строки запятой, а затем выбрать второй токен:

tokenize(/event, ',')[2]
  • 0
    классно! Как бы я реализовать это в моем коде? что-то вроде String event = xpath.evaluate ("/ event", doc) .tokenize (/ event, '2') [2]; ??
  • 0
    tokenize - это XPath 2.0, поэтому вам нужна реализация, которая его поддерживает, такая как Saxon 9. Посмотрите этот вопрос о настройке Saxon в Java.
1

Я не думаю, что это возможно, и, вероятно, это не очень хорошая идея, содержимое вашего элемента должно быть атомарным, я бы не смешивал этот синтаксический разбор с Xpath и просто переносил событие с помощью метода утилиты, набивающего первое слово.

  • 0
    хорошо круто, я буду придерживаться того, что я знаю

Ещё вопросы

Сообщество Overcoder
Наверх
Меню