gpt4 book ai didi

java - 将 XML 转换为 Java 对象时获取不正确的值

转载 作者:行者123 更新时间:2023-11-29 05:33:00 24 4
gpt4 key购买 nike

我正在尝试使用 Jaxb 解码将 XML 文件转换为 Java 对象。

                public static void main(String[] args) {
String input = "<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">"+
" <key>1</key>" +
"<income>100.335</income>" +
"</project>" ;
NexusClient c1 = new NexusClient();
c1.getObject(input);
}
/*********/
public boolean getObject(String input) {
InputSource inputSource = new InputSource(new StringReader(input));
System.out.println(inputSource);

try {
JAXBContext jaxbContext = JAXBContext
.newInstance(mavenEntity.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
mavenEntity mavenObject = (mavenEntity) jaxbUnmarshaller
.unmarshal(inputSource);

System.out.println("Success"+mavenObject.getIncome());
} catch (JAXBException e) {
System.out.println("Unable to parse the XML Context");
e.printStackTrace();
return false;
}

return true;
}

我在尝试提取“收入”标签信息时遇到问题。我无法使用 Jaxb 提取正确的值。我的 pojo 类是:

@XmlRootElement(name = "project", namespace = "http://maven.apache.org/POM/4.0.0")
@XmlAccessorType(XmlAccessType.FIELD)
public class mavenEntity {

@XmlElement(name = "key", type = String.class)
private String key;

@XmlElement(name = "income", type = String.class)
private String income;


public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}


public String getIncome() {
return income;
}
public void setIncome(String income) {
this.income = income;
}
}

我将 Null 作为 XML 中任何标记的输出。我想我在 XML 注释中的 namespace 存在一些问题。但我真的不明白那是什么。在发布之前,我引用了一些类似于 this 的链接做了一些基础工作。但我的结果仍然不正确。有人可以帮我吗。

最佳答案

模型中的命名空间限定与文档不匹配。您可以使用 @XmlSchema 在包级别指定命名空间限定,而不是在 @XmlRootElement@XmlElement 的所有实例上指定命名空间。

package-info.java

@XmlSchema( 
namespace = "http://maven.apache.org/POM/4.0.0",
elementFormDefault = XmlNsForm.QUALIFIED)
package org.example.foo;

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

ma​​venEntity.java

我已经从这个类中删除了不必要的注释(参见:http://blog.bdoughan.com/2012/07/jaxb-no-annotations-required.html)。

package org.example.foo;

import javax.xml.bind.annotation.XmlSchema;

@XmlRootElement(name = "project")
@XmlAccessorType(XmlAccessType.FIELD)
public class mavenEntity {

private String key;

private String income;

}

了解更多信息

关于java - 将 XML 转换为 Java 对象时获取不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20474662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com