По пътя на Java, Linux и JDOM с отворен код, работата с XML в Java е лесна като черупка
JDOMе силно опростена Java библиотека с отворен код за създаване, анализиране, модифициране и сериализиране на XML документи. За разлика от други подобни DOM API, JDOM е фокусиран върху езика Java, а не върху XML спецификациите, което значително опростява кода и улеснява интуитивното му разбиране. В същото време JDOM не е "велосипед" и не съдържа собствен анализатор, а използва вече съществуващи разработки - стандартни пакетиjavax.xmlиorg.xml.sax. Ако трябва да работите с XML, първо обърнете внимание на тази конкретна библиотека, най-вероятно ще ви хареса.
Кратко описание на JDOM библиотечния модел
Точно като самия XML, JDOM API са базирани на дърво. Библиотеката основно използва класоветеDocument,ElementиAttributeза представяне на XML.

Сега нека видим как ще изглежда самият XML.
За да създадете XML документ в общия случай, трябва да изпълните следните стъпки:
- Създайте екземпляр наДокумент
- Създайте основенElementи го добавете към екземпляра на документа
- Създайте и попълнете, започвайки от основния елемент, необходимото дърво, като използвате екземпляри наElement,Attribute,Commentи т.н.
- Ако е необходимо, изведете (например във файл) създадения документ като поток от байтове, като използвате класаXMLOutputter.
Изходният формат може да се контролира с помощта на класаorg.jdom.output.Format. Например, можете да зададете отстъп, символ за нов ред, изходно кодиране, да посочите как трябва да се извеждат празни елементи ( или ), да зададете автоматично премахване на допълнителни интервалигерои и др.
Работата със съществуващ XML файл се състои от следните стъпки:
- Създаване на екземпляр на класаorg.jdom.input.SAXBuilder, който може да изгради JDOM дърво от файлове, потоци, URL адреси и др.
- Извикване на методаbuild()на екземпляра на SAXBuilder, като се посочи файл или друг източник.
- Навигация в дървото и манипулиране на елементи според нуждите.
За да преминете през всички елементи в дървото (Екземпляри на Елемент), можете да използвате методаgetChildren(), за да получите Списък на всички дъщерни екземпляри на коренния елемент и след това да извикате getChildren() за всяко дете и т.н.
getChildren() пример
Можете да го направите по различен начин - използвайте методитеgetContent()иgetDescendants(), като им подадете филтри, за да ограничите избора.
Методът getContent() връща списък с вложени елементи и се търси само до дълбочина от 1 ниво. По този начин, използвайки getContent(), можете да получите дъщерните елементи на обекта, на който се извиква този метод, но не можете да получите дъщерните елементи на неговите деца.
Методът getDescendants() връща итератор за всички намерени елементи, но за разлика от getContent(), търсенето се извършва на всички нива на влагане на елементи.
Сега ще дам пример за метод, който анализира създадения по-рано XML файл. След изпълнение на метода на конзолата ще се покаже следното:
Промяната на дървото се извършва с помощта на различни методи като removeChild(), removeChildren(), removeContent(), addContent(), setContent(), removeAttribute(), setAttribute(),setName(), setText() и др. и т.н., мисля, че това вече е ясно.
Повече информация за JDOM можете да намерите на официалния уебсайт, както и в глави 14 и 15 на свободно достъпната книга за работа с XML в Java (всички на английски).