Разбор XML для разных членов на основе значения атрибута

1

Я работаю над XML-анализом java. У меня есть сценарий, подобный этому.

Мне нужно разобрать XML в java на основе значения атрибута.

Мне нужно проанализировать все элементы EMPLOYEE с атрибутом PERMANENT="Y" в одном члене и с атрибутом PERMANENT="N" в другом члене.

<EMPLOYEE PERMANENT="Y">
    <DETAILS NAME="AA"  ID="1"  AGE="28" />
    <DETAILS NAME="BB"  ID="2"  AGE="29" />
</EMPLOYEE>
<EMPLOYEE PERMANENT="N">
   <DETAILS NAME="CC"  ID="3"  AGE="28" />
    <DETAILS NAME="DD"  ID="4"  AGE="29" />
</EMPLOYEE>

Ява

public class Employee
{

   // @XStreamAlias("EMPLOYEE") and attribute PERMANENT="Y"
    private Details permanentEmployee;

   // @XStreamAlias("EMPLOYEE") and attribute PERMANENT="N"
    private Details tempEmployee;

}

Я не знаю, как это сделать.

Кто-нибудь может мне помочь.

Теги:
converter
xml-parsing
xstream

1 ответ

1

Вы можете сделать это, используя java xml api

Выражение XPath для выбора узлов "DETAILS" будет выглядеть примерно так:

import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
//...

XPath xPath =  XPathFactory.newInstance().newXPath();
String expression = "/documentBody/EMPLOYEE[@PERMANENT="Y"]/DETAILS"
NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);

Это возвращает nodeList, который вам нужно выполнить для каждого узла DETAILS, который я бы предположил, описывая одного сотрудника.

  • 0
    Спасибо. Можете ли вы помочь, как сделать это с помощью xstreamAlias
  • 0
    @Patan XStream - это библиотека сериализации xml для Java. Я очень сомневаюсь, что вы можете сделать это с помощью аннотации XStreamAlias, эта аннотация предназначена для определения псевдонима класса или поля ... Вы просите проанализировать все элементы Employee ... хорошо, если они были сериализованы с использованием библиотеки XStream, которую вы должен иметь возможность использовать метод .fromXML (). Если они не были сериализованы с использованием XStream, я не вижу смысла в том, чтобы вы использовали эту библиотеку, ее основное назначение - сериализация xml. Java уже предоставляет отличный API для запросов XPath.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню