Я пытаюсь удалить файл 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;
Заранее спасибо!