我有以下带有许多属性的XML标记.没有给出属性的数量/名称,因为我在运行时获取XML,而我只知道标记的名称.如何使用JAXB将所有属性作为一个Map<String, String>
?
如何将其添加到以下Java代码中:
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "script ")
@XmlAccessorType(javax.xml.bind.annotation.XmlAccessType.FIELD)
public class SearchScriptElement
{
@XmlAttribute(name = "script")
private String script = "";
public String getScript()
{
return name;
}
public void setScript(String name)
{
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
XML示例:我可以拥有许多在运行时未知的属性:
<ScriptList>
<script name="xxx" value="sss" id=100 >
<script>
<script name="xxx" value="sss" id=100 alias="sss">
<script>
</ScriptList>
Run Code Online (Sandbox Code Playgroud)
你可以做:
@XmlAnyAttribute
private Map<QName, String> attributes;
Run Code Online (Sandbox Code Playgroud)
几乎Map<String, String>
就是你想要的.
Ale*_*exR -1
创建 2 个类ScriptList
并Script
:
@XmlType(name = "ScriptList")
public class ScriptList {
private Collection<Script> scripts;
@XmlElement(name = "location")
public Collection<Script> getSripts() {
return scripts;
}
}
@XmlType(name = "script")
public class Script {
private String name;
private String value;
private String id;
private String alias;
@XmlAttribute(name="name")
public String getName() {
return name;
}
// add similar getters for value, id, alias.
// add setters for all fields.
}
Run Code Online (Sandbox Code Playgroud)
我相信,仅此而已。至少这可以作为您的起点。
归档时间: |
|
查看次数: |
3086 次 |
最近记录: |