Ответ зависит от того, что вы хотите сделать с вашим XML. Если вы хотите создавать объекты Java, используйте JAXB, как предложил Мэтт Болл.
Если вы хотите сделать что-то (например, выполнить некоторый код) в зависимости от имен элементов XML (или содержимого их атрибутов, или чего-либо еще), то, скорее всего, у вас будет бесконечный if-else
. Зачем? Потому что вы разветвляете свой код в зависимости от того, что у вас есть в XML.
Вы можете обойти это:
- помещение каждой ветви внутри класса (или метода) и использование загрузчика классов (или отражения) для создания его экземпляра (или вызова этого метода);
- в случае наличия конечного набора элементов, на которые вы должны ответить, укажите
HashMap<String, Method>
и заполните его перед синтаксическим анализом, а затем просто вызовите метод, который дает вам хеш; это подразумевает использование отражения.
Оба решения негативно влияют на скорость, но значительно (на мой взгляд) повышают удобочитаемость, возможность повторного использования и понимание вашего кода.
Вы можете рассмотреть возможность использования DOM вместо SAX. Недостаток: загружает весь XML в память; Преимущество: вы можете легко перемещаться по дереву элементов и всегда иметь контекст любого элемента.
Что касается написания XML: очень простые XML-документы вы можете просто написать , они не отличаются от обычных текстовых файлов (открыть поток, записать в него, закрыть его). Однако обычно лучше работать с деревом DOM, а затем сохранять его; Есть много уроков об этом.
Если ваше программное обеспечение будет использоваться часто, и вы очень полагаетесь на структуру документа XML и хотите избежать неприятных сбоев, вызванных неуместными элементами, убедитесь, что у вас есть схема (XSD) или DTD для это и проверить каждый документ XML, который вы загружаете против него. Это очень помогает;)