编辑:这是我加载 XML 文档的方式,正如我在 Blaise 的回答中使用的那样。我这样加载它是因为我想使用一个节点,而不是整个文档。即使使用整个文档,我在以这种方式加载时仍然遇到问题。
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
,我得到一个包含[cookie,crackers]的ArrayList。
如果我将上面的声明更改为
@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 提取属性列表,可能吗?如果是,如何?
谢谢你。