Разбор xml с использованием jaxb в зависимости от значения атрибута - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь удалить файл XML с помощью JaxB.Хотя у меня есть поля, которые отличаются от свойства атрибута.Ниже приведен пример моего xml-файла:

    <?xml version="1.0" encoding="UTF-8"?><translationObjectFile fileType="ASSETMETADATA">
  <translationObjectProperties>
    <property isMultiValue="false" nodePath="/content/dam/we-retail/fr/activities/running/running-woods-woman.jpg/jcr:content/metadata" propertyName="jcr:title">Running Woods Woman</property>
    <property isMultiValue="false" nodePath="/content/dam/we-retail/fr/activities/running/running-woods-woman.jpg/jcr:content/metadata" propertyName="dc:description">Test101 Desc</property>
    <property isMultiValue="true" nodePath="/content/dam/we-retail/fr/activities/running/running-woods-woman.jpg/jcr:content/metadata" propertyName="dc:subject">
      <value order="0">Test101 - Key1</value>
      <value order="1">Test101 - Key2</value>
      <value order="2">Test101 - Key3</value>
    </property>
    <property isMultiValue="false" nodePath="/content/dam/we-retail/fr/activities/running/running-woods-woman.jpg/jcr:content/metadata" propertyName="dc:title">Running Woods Woman - Test101</property>
  </translationObjectProperties>
</translationObjectFile>

Как вы можете видеть выше, свойство с именем isMultiValue показывает, имеет ли свойство одно значение или список значений.Я смог получить список значений, выполнив это:

@XmlElement(name = "value")
private List<String> values;

Хотя для отдельных значений он возвращает ноль.Может быть, потому что у него нет тега значения до точного значения?Затем я попытался получить одиночные значения, выполнив это:

@XmlValue
private String value;

Я хотел добавить условие, которое проверяет, истинно ли isMultiValue , так как оно будет использовать тип List, иначе оно будет использоватьоднострочная реализация.Хотя я заблудился от того, как я это сделаю.

Ниже приведена моя функция сортировки:

String inputStream = IOUtils.toString(xmlInputStream, "UTF-8"); 
final JAXBContext jc = JAXBContext.newInstance(TranslationObjectFile.class);
final Unmarshaller unmarshaller = jc.createUnmarshaller();
Object value = unmarshaller.unmarshal(new StringReader(inputStream));
return (T) value;

Заранее спасибо!

...