Самый эффективный способ обработки строки, содержащей XML, в JAVA - PullRequest
3 голосов
/ 17 мая 2009

У меня есть строка, содержащая XML-узлы, и я пытаюсь использовать синтаксический анализ DOM для обработки этой строки, чтобы извлечь значения узлов и сохранить их в локальных переменных.

XML, который хранится в строковой переменной:

<carGarage>
   <car>
      <make>Chrysler</make>
      <color>Red</color>
   </car>
   <car>
      <make>Musano</make>
      <color>Blue</color>
   </car>
</carGarage>

Мой класс Java, где я хочу извлечь значения XML и сохранить их в локальных атрибутах:

public class CarGarage
{   String make, color;

    public void setMake(String make)
    { this.make = make; }

    public void setColor(String color)
    { this.color = color; }

    public void DOMparsingMethod(Node thisNode)
    { int typeOfNode = thisNode.getNodeType();
      ...
    }
}

Как лучше всего подойти к этому? Я посмотрел на StringBufferInputStream, но это устарело. Я действительно совершенно потерян.

Thankyou, Лукас.

Ответы [ 5 ]

2 голосов
/ 17 мая 2009

Посмотрите на использование DocumentBuilder для анализа любого потока ввода. Вот пример , который читает из файла класс, подобный вашему.

1 голос
/ 17 мая 2009

Я предлагаю вам взглянуть на XStream . Это поддержка преобразования XML в объекты. Вы можете дать ему XML, и он даст вам список объектов, которые вы хотите.

1 голос
/ 17 мая 2009

Зачем использовать DOM?

Если вы пытаетесь просто прочитать и превратить xml в объект, то я бы предложил STAX, поскольку SAX быстрее, чем DOM, но слишком много кодирует, STAX намного приятнее, и вы можете узнать больше об этом ниже. https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/programming-and-development/?p=639

1 голос
/ 17 мая 2009

Существует множество библиотек привязки объектов к XML, которые делают именно то, что вам нужно, но они, как правило, довольно громоздкие инструменты.

Для этого простого примера разумно обращаться с домом самостоятельно. Предложение Джастина о встроенных библиотеках java для этого является хорошим началом, хотя иногда это тоже может показаться уродливым, поскольку jdk обычно не предоставляет вам xml-анализатор, требующий от вас волшебного подключения за кулисами.

Я предпочитаю JDOM для такого рода вещей. По сути, он такой же, как маршрут DocumentBuilder, но похож и только частично совместим.

0 голосов
/ 17 мая 2009

По моему опыту, DOM полезен для такого рода вещей, потому что он имеет низкую кривую обучения по сравнению с SAX / STAX, хотя он не такой быстрый и неэффективно использует память. Получив документ DOM, вы можете использовать XPath-запросы к документу, чтобы получить содержимое отдельных элементов и проанализировать их.

...