【发布时间】:2013-12-04 11:26:26
【问题描述】:
我正在用 java 开发一个 xml 映射器。我为此使用 Eclipse Moxy,但我在其中遇到了一个问题。我可以将父节点的所有子节点放入哈希图中。但问题是父节点的属性也进入该哈希图。但我想分别获得这些属性。以下是我的代码
我有以下 xml 段
<keystore name="xyz">
<type>JKS</type>
<password>wso2carbon</password>
<keyAlias>wso2carbon</keyAlias>
<keyPassword>wso2carbon</keyPassword>
</keystore>
以下是相关的 XSD 部分
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="keystore">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="type"/>
<xs:element type="xs:string" name="password"/>
<xs:element type="xs:string" name="keyAlias"/>
<xs:element type="xs:string" name="keyPassword"/>
</xs:sequence>
<xs:attribute type="xs:string" name="name"/>
</xs:complexType>
</xs:element>
</xs:schema>
我想将此 XML 映射到我的 java 代码中。当我使用 Moxy 访问它时,我也会在子元素的映射中获得“名称”属性。例如:
[0]名称
[1]类型
[2]密码
........
但我想单独获取父元素(“名称”)的属性(不在子元素映射中)。我可以单独获取 xml 元素的属性吗? ?
这就是我的代码的样子
private DynamicEntity getDynamicEntity()
throws SAXException, URISyntaxException, IOException, XMLStreamException,
ConfigurationMismatchException {
FileInputStream xsdInputStream = null;
DynamicJAXBContext jaxbContext;
DynamicEntity autoElement = null;
try {
xsdInputStream = new FileInputStream("/home/....../automation_mapping.xsd");
FileInputStream xmlInputStream = new FileInputStream("/home/...../automation.xml");
jaxbContext = DynamicJAXBContextFactory.createContextFromXSD(xsdInputStream, null, null, null);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
autoElement = (DynamicEntity) unmarshaller.unmarshal(xmlInputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return autoElement;
}
这个autoElement 对象包含xml 文件数据。然后我使用以下代码访问 DynamicEntity
DynamicEntity myEntity=autoelment.get(name);
但问题是使用get()方法无法单独获取元素的属性
【问题讨论】:
-
你的代码是什么样的?
-
我已将我的代码 sn-p 添加到我的问题中。
标签: java xml eclipselink moxy