Я использую библиотеку 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>
и обрабатывать только второй узел. Могу ли я вызвать его с помощью индекса.
В приведенном выше XML, как вы можете видеть, у меня есть два узла, называемых Есть ли какой-то способ, который я могу указать для индекса и получить удержание второго. Я не хочу обрабатывать первый. В реальном сценарии я не хочу обрабатывать сотни записей, например, и выбирать некоторые узлы только по определенному индексу, то есть записывать номер 9 или номер записи 228 и т. Д. Подобным образом. Я бы не хотел, чтобы библиотека хранила все записи в памяти. –
Затем XStream - это не библиотека, которую вы хотите. Попробуйте изучить XPath. Возможно, вы можете изолировать определенный узел с помощью XPath, а затем десериализовать этот раздел с помощью XStream. –
Но XPath работает только с парсером DOM. Он будет обрабатывать всю память, поскольку он загружает весь файл, прежде чем он сможет разрешить выборку на основе индекса. –