Я пытаюсь разобрать xml-файл, используя JaxB.Он получает все значения, кроме последней части (значения).Значение может быть простым значением или может быть списком значений.Я могу получить значение, исключив translationObjectValue, но это относится только к отдельным значениям, а не к списку значений.Я хотел поддержать оба типа значений.Ниже приведен пример моего xml-файла.
<?xml version="1.0" encoding="UTF-8"?><translationObjectFile fileType="ASSETMETADATA">
<translationObjectProperties>
<property isMultiValue="false" nodePath="/content/dam/we-retail/fr/experiences/steelhead-and-spines-in-alaska/steelhead-and-spines-in-alaska-1.jpg/jcr:content/metadata" propertyName="dc:description">Test92 - Desc</property>
<property isMultiValue="false" nodePath="/content/dam/we-retail/fr/experiences/steelhead-and-spines-in-alaska/steelhead-and-spines-in-alaska-1.jpg/jcr:content/metadata" propertyName="dc:rights">Sample Photography</property>
<property isMultiValue="true" nodePath="/content/dam/we-retail/fr/experiences/steelhead-and-spines-in-alaska/steelhead-and-spines-in-alaska-1.jpg/jcr:content/metadata" propertyName="dc:subject">
<value order="0">alaska</value>
<value order="1">bolivia</value>
<value order="2">camping</value>
<value order="3">condoriri</value>
</property>
<property isMultiValue="false" nodePath="/content/dam/we-retail/fr/experiences/steelhead-and-spines-in-alaska/steelhead-and-spines-in-alaska-1.jpg/jcr:content/metadata" propertyName="dc:title">Test92 - Title</property>
</translationObjectProperties>
</translationObjectFile>
Ниже приведены мои методы получения / установки.
TranslationObjectFile
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class TranslationObjectFile {
@XmlAttribute
private String fileType;
@XmlAttribute
private String sourcePath;
@XmlElementWrapper
@XmlElement(name = "property")
private List<TranslationObjectProperty> translationObjectProperties;
TranslationObjectProperty
@XmlAccessorType(XmlAccessType.FIELD)
public class TranslationObjectProperty {
@XmlAttribute
private boolean isMultiValue;
@XmlAttribute
private String nodePath;
@XmlAttribute(name = "propertyName")
private String propertyNameValue;
@XmlElementWrapper
@XmlElement(name = "value")
private List<TranslationObjectValue> subjectValue;
TranslationObjectValue
@XmlAccessorType(XmlAccessType.FIELD)
public class TranslationObjectValue {
@XmlValue
private String value;
Ниже приведен код для удаления содержимого:
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;
Благодарим вас зазаранее!