Что такое простой и легкий API Java для чтения и записи строк XML? - PullRequest
0 голосов
/ 24 мая 2011

Привет всем, я прочитал некоторые ответы на другие вопросы, подобные этому, и не получил хороший ответ ...

Так что я хотел бы знать некоторые хорошие API для чтения и записи XML-строк. Чтобы читать, я думаю использовать SAX, я уже начал писать xmlhandler с конечным автоматом для его обработки, но обработчик начинает становиться большим по методу

 public void startElement(String uri, String name, String n, Attributes at)

у меня есть бесконечное другое, если дерево, это нормально и правильно?

Чтобы написать XML-строки, я еще не знаю ...

спасибо за ваше время

1 Ответ

3 голосов
/ 24 мая 2011

Ответ зависит от того, что вы хотите сделать с вашим XML. Если вы хотите создавать объекты Java, используйте JAXB, как предложил Мэтт Болл.

Если вы хотите сделать что-то (например, выполнить некоторый код) в зависимости от имен элементов XML (или содержимого их атрибутов, или чего-либо еще), то, скорее всего, у вас будет бесконечный if-else. Зачем? Потому что вы разветвляете свой код в зависимости от того, что у вас есть в XML.

Вы можете обойти это:

  • помещение каждой ветви внутри класса (или метода) и использование загрузчика классов (или отражения) для создания его экземпляра (или вызова этого метода);
  • в случае наличия конечного набора элементов, на которые вы должны ответить, укажите HashMap<String, Method> и заполните его перед синтаксическим анализом, а затем просто вызовите метод, который дает вам хеш; это подразумевает использование отражения.

Оба решения негативно влияют на скорость, но значительно (на мой взгляд) повышают удобочитаемость, возможность повторного использования и понимание вашего кода.

Вы можете рассмотреть возможность использования DOM вместо SAX. Недостаток: загружает весь XML в память; Преимущество: вы можете легко перемещаться по дереву элементов и всегда иметь контекст любого элемента.

Что касается написания XML: очень простые XML-документы вы можете просто написать , они не отличаются от обычных текстовых файлов (открыть поток, записать в него, закрыть его). Однако обычно лучше работать с деревом DOM, а затем сохранять его; Есть много уроков об этом.

Если ваше программное обеспечение будет использоваться часто, и вы очень полагаетесь на структуру документа XML и хотите избежать неприятных сбоев, вызванных неуместными элементами, убедитесь, что у вас есть схема (XSD) или DTD для это и проверить каждый документ XML, который вы загружаете против него. Это очень помогает;)

...