какая структура данных должна использоваться для хранения различных значений тегов XML после его анализа - PullRequest
0 голосов
/ 22 октября 2010

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

<personaldetails>
    <name>Michael</name>
    <age>28</age>
    <gender>Male</gender>
    <address>123 Streeet 7</address>
    <country>India</country>
    <pincode> 1234877</pincode>
    <contactno>35646445</contactno>
    <emailid>michael@abc.com</emailid>
</personaldetails>

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

Ответы [ 2 ]

1 голос
/ 22 октября 2010

Геттеры и сеттеры на объекте имеют преимущество типа безопасности. Например, если вы попытаетесь написать код getContactN, компилятор выдаст вам ошибку. Поэтому, хотя это может сделать ваш код длинным, методы получения и установки хороши.

Альтернативой может быть использование карты, например. Map<String,String> для хранения значений. Это более общий подход - вы можете вставить любой ключ, который вам нравится, - и он меньше кода, однако он не дает вам преимущества статического анализа геттеров и сеттеров. Если вы что-то неправильно написали, вы обнаружите это только при выполнении этого фрагмента кода - и если он находится в if, код может не всегда выполняться, и вы можете его пропустить.

Существуют также различия в производительности между использованием геттеров / сеттеров и карты, однако, я думаю, что в 99% приложений они не будут иметь значения, поэтому здесь не стоит указывать. Если этот код становится узким местом, вы можете указать время, чтобы увидеть, какой подход лучше - но делайте это только в том случае, если вы можете проверить, есть ли у вас проблемы с производительностью в этой области, в противном случае просто используйте тот метод, который более удобен в обслуживании и проще для вас.

0 голосов
/ 22 октября 2010

Я бы порекомендовал вам не изобретать велосипед, написав свои собственные "контейнерные" классы.Вместо этого вы можете рассмотреть возможность создания ваших классов Java непосредственно из вашей XML-схемы с помощью такого инструмента, как xjc, который поставляется вместе с JDK.У этого подхода есть огромное преимущество: вам не нужно беспокоиться о каком-либо явном разборе XML, и код JAXB также проверит ваш XML-контент.

Подробнее об использовании JAXB здесь .

EDIT : Я только что заметил тег Android и признаюсь, что не уверен, поставляется ли пакет javax.xml.bind с JDK для устройств Android.Однако поиск в Google «xml binding android», похоже, привел к появлению ряда сторонних инструментов, которые вы могли бы рассмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...