Редактировать: вот как я загружаю XML-документ, как я использовал его в ответе Блейза. Я загружаю это так, потому что я хочу работать с узлом, а не со всем документом. Даже при использовании всего документа у меня все еще возникают проблемы при загрузке таким способом.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("[path to doc]/input.xml");
TestClass testClass = (TestClass) unmarshaller.unmarshal(doc);
У меня есть XML, который выглядит так:
<test>
<items>
<item type="cookie">cookie</item>
<item type="crackers">crackers</item>
</items>
</test>
А класс:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "test")
public class TestClass
{
@XmlPath("items/item/text()")
@XmlElement
private ArrayList<String> itemList = new ArrayList<String>();
// getters, setters omitted
}
Приведенный выше код будет работать независимо от того, есть ли у меня @XmlElement
, и я получаю ArrayList, содержащий [cookie, crackers].
Если я изменю объявление выше на
@XmlPath("items/item/@type")
@XmlElement
private ArrayList<String> itemList = new ArrayList<String>();
мой ArrayList пуст.
Моя конечная цель - просто иметь атрибуты, чтобы мой XML выглядел так:
<test>
<items>
<item type="cookie"/>
<item type="crackers"/>
</items>
</test>
Возможно ли то, что я пытаюсь сделать, вытащить список атрибутов с помощью XPath, и если да, то как?
Спасибо.