2016-02-10 9 views
0

Я использую библиотеку XStream для синтаксического анализа XML. Мне было интересно, позволяет ли библиотека переходить на конкретный узел напрямую с помощью индекса.Могу ли я получить индекс анализируемого XML с помощью XStream

Так, например,

<details> 
    <personal> 
     <basicInfo> 
     <firstName>John</firstName> 
     <lastName>Doe</lastName> 
     <phoneNumber>9999999999</phoneNumber> 
     <dateOfBirth>1990-01-01</dateOfBirth> 
     </basicInfo> 
     <address> 
     <street>random St.</street> 
     <city>City</city> 
     <stateProv>BC</stateProv> 
     <country>CA</country> 
     <postCode>12345</postCode> 
     </address> 
    </personal> 
    <personal> 
     <basicInfo> 
     <firstName>John2</firstName> 
     <lastName>Doe2</lastName> 
     <phoneNumber>9999999999</phoneNumber> 
     <dateOfBirth>1990-01-01</dateOfBirth> 
     </basicInfo> 
     <address> 
     <street>random St.2</street> 
     <city>City2</city> 
     <stateProv>BC2</stateProv> 
     <country>CA2</country> 
     <postCode>12345</postCode> 
     </address> 
    </personal> 
</details> 

Для XML выше, я хотел бы, чтобы пропустить первую <personal>...</personal> и обрабатывать только второй узел. Могу ли я вызвать его с помощью индекса.

ответ

0

XStream - это простая библиотека для сериализации объектов в XML и обратно.

Я не уверен, что вы подразумеваете под процессом в этом контексте, но если ваш POJO для сериализации настроен правильно, чтобы содержать список «личных» узлов. Я не понимаю, почему вы не могли десериализовать XML и удалить ненужный узел после факта.

+0

В приведенном выше XML, как вы можете видеть, у меня есть два узла, называемых Есть ли какой-то способ, который я могу указать для индекса и получить удержание второго. Я не хочу обрабатывать первый. В реальном сценарии я не хочу обрабатывать сотни записей, например, и выбирать некоторые узлы только по определенному индексу, то есть записывать номер 9 или номер записи 228 и т. Д. Подобным образом. Я бы не хотел, чтобы библиотека хранила все записи в памяти. –

+0

Затем XStream - это не библиотека, которую вы хотите. Попробуйте изучить XPath. Возможно, вы можете изолировать определенный узел с помощью XPath, а затем десериализовать этот раздел с помощью XStream. –

+0

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

0

Насколько я знаю, vtd-xml - единственная процедура разбора XML, которая изначально предлагает функцию индексирования, называемую vtd + XML.