我一直在做很多解决方案,但是没有人起作用。我如何在Java中打印此XML代码。主要问题是如何打印xml:lang值。
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-properties.xsd">
<property key="hour.plural">
<value xml:lang="ar">ساعات</value>
<value xml:lang="de">Stunden</value>
<value xml:lang="pl">oglądaj</value></property></resource>
这是资源类
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="resource")
public class resource {
private String property;
private String value;
public root(String property, String value) {
this.property = property;
this.value = value;
}
public String getProperty() {
return property;
}
public String getValue() {
return value;
}
public String toString() {
return property + value;
}
}
那是主要的类
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import project1.resource;
public class xmlread {
public static void main(String... arg) throws Exception {
File file = new File("C:DateTimeLabels.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(resource.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
resource Resource = (resource) jaxbUnmarshaller.unmarshal(file);
System.out.println(Resource);
}
}
答案 0 :(得分:0)
@XmlRootElement(name="resource")
public class resource {
private String property;
private String value;
public root(String property, String value) {
this.property = property;
this.value = value;
}
@XmlElement(name = "property")
public String getProperty() {
return property;
}
@XmlElement(name = "value")
public String getValue() {
return value;
}
public String toString() {
return property + value;
}
}`
将其添加到您的资源类中,应该可以帮助编组找到所需的确切属性。
答案 1 :(得分:0)
您拥有多个值,因此,为了<value>
元素,您需要定义一个值列表。
元素包含在元素内部,因此您在此处具有嵌套结构。这意味着您需要在Resource类中包含一个Property类,并且Property类需要包含一个Value类。
您需要绑定key属性和xml:lang属性。
这里是一个带有Jaxb注释的类的示例,该类完成了大部分工作以映射到您的XML格式。根据需要完成。
@XmlRootElement
public class Resource {
private Property property = new Property();
public Property getProperty() {
return property;
}
public void setProperty(Property property) {
this.property = property;
}
public static void main(String[] args) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(Resource.class);
Marshaller marshaller = context.createMarshaller();
Resource resource = new Resource();
resource.getProperty().setKey("hour.plural");
resource.getProperty().getValues().add(new Value("fr"));
resource.getProperty().getValues().add(new Value("it"));
resource.getProperty().getValues().add(new Value("ru"));
marshaller.marshal(resource, System.out);
}
}
class Property {
private String key;
private List<Value> values = new ArrayList<>();
@XmlAttribute
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
@XmlElement(name = "value")
public List<Value> getValues() {
return values;
}
public void setValues(List<Value> values) {
this.values = values;
}
}
class Value {
private String lang;
public Value() {
}
public Value(String lang) {
this.lang = lang;
}
@XmlAttribute
public String getLang() {
return lang;
}
public void setLang(String lang) {
this.lang = lang;
}
}