我正在尝试使用JAXB读取一个xml。
我正面临一个奇怪的问题,其中父类的属性没有被读取,但子类的属性被读取。我参考了论坛,但这似乎是一个奇怪的论坛。
谁能告诉我我犯了什么错误。
XML。
<?xml version="1.0" encoding="UTF-8"?>
<PhoneDirectory>
<Exchange exchangeName="ashfield2133">Ashfield</Exchange>
<PhoneNumber id="23" number="0489524401">
<FirstName>Test</FirstName>
<LastName>Test</LastName>
<Address>#34,rt road, State,Country,22344 </Address>
</PhoneNumber>
<PhoneNumber id="88" number="0409545401">
<FirstName>Testf2</FirstName>
<LastName>Testl2</LastName>
<Address>St 2 , State,Country,34555</Address>
</PhoneNumber>
<PhoneNumber id="88" number="0446775401">
<FirstName>Testf3</FirstName>
<LastName>Testl3</LastName>
<Address>St 3 , State,Country,546777</Address>
</PhoneNumber>
</PhoneDirectory>
电话目录类
package com.test.phoneDirectory.dataclass;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
@XmlRootElement(name="PhoneDirectory")
public class PhoneDirectory {
private String exchange;
private String exchangeName;
@XmlElement(name="Exchange")
public String getExchange() {
return exchange;
}
public void setExchange(String exchange) {
this.exchange = exchange;
}
@XmlAttribute(name="exchangeName")
public String getExchangeName() {
return exchangeName;
}
public void setExchangeName(String exchangename) {
this.exchangeName = exchangename;
}
private List<PhoneNumber> phoneNumber;
@XmlElement(name="PhoneNumber")
public List<PhoneNumber> getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(List<PhoneNumber> phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
电话号码类
package com.test.phoneDirectory.dataclass;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="PhoneNumber")
public class PhoneNumber {
private String id;
private String number;
private String firstName;
private String lastName;
private String address;
@XmlAttribute(name="id")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlAttribute(name="number")
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
@XmlElement(name="FirstName")
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@XmlElement(name="LastName")
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@XmlElement(name="Address")
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
主类
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import com.test.phoneDirectory.dataclass.PhoneDirectory;
import com.test.phoneDirectory.dataclass.PhoneNumber;
public class GetAllPhoneData {
public static void main(String[] args) throws JAXBException {
// TODO Auto-generated method stub
JAXBContext jc = JAXBContext.newInstance(PhoneDirectory.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
PhoneDirectory phoneDirectory = (PhoneDirectory) unmarshaller.unmarshal(new File("src/config/PhoneDirectory.xml"));
System.out.println("Get all phone details");
System.out.println("Exchange:"+phoneDirectory.getExchange());
System.out.println("exchangeName:"+phoneDirectory.getExchangeName());
for (PhoneNumber phonedetails : phoneDirectory.getPhoneNumber()) {
System.out.println(phonedetails.getId());
System.out.println(phonedetails.getNumber());
System.out.println(phonedetails.getFirstName());
System.out.println(phonedetails.getLastName());
System.out.println(phonedetails.getAddress());
}
}
}
输出
Get all phone details
Exchange: Ashfield
****Get exchangeName :null****
23
0489524401
Test
Test
#34,rt road, State,Country,22344
如您所见,尽管提到了字段的XMLAt⃣注释,但exchange eName为null。
谢谢,毗湿奴
您已经在PhoneDirectory
类中声明了exchangeName
attribute,但您的XML在
所以不要
private String exchange;
private String exchangeName;
您将需要一个类似于< code>Exchange的类,带有< code > @ XML attribute < code > Exchange name 和< code > @ XML value < code > Exchange 。
我向一个服务发出API请求,该服务在主体中返回一个JSON对象。 我似乎无法在groovy中获得名为“properties”的键的值。 每次我调用我得到以下内容 但是如果我只调用,就会得到预期的JSON对象 同样,如果I我得到这只是当我我是否得到上述响应
Beans文件: 在BaseTest中,当调用)方法时,属性文件中的值起作用,但如果试图将该值用作中的变量,则该值为空。你能帮帮我吗?
这是我的xml: 我为这个xml使用了JAXB和unMarshall,我可以得到描述和外部密钥。但是我不能得到有价值的属性名称。 > 这是我的java类: 组织JAVA 银行JAVA 如何获取属性名称和值?谢谢你
这是我的建筑。格雷德尔 因此,restTemplate抛出NullPointerException而不是返回模拟obj。
检索给定节点resp的所有属性名(而不是属性值!)的Xpath表达式看起来如何。xml标签? 假设以下XML文档: Xpath//title/@*会选择“eng,fr,easyreading”,但哪个Xpath会选择“lang,lang,type”?
问题内容: 我正在使用Android从Web解析XML。下面的代码显示了XML的示例。我遇到的问题是我无法获得item标签的字符串值。当我使用它时,它输出的是名称,而不是属性的值。 问题答案: 用 代替 因为正如文档所说: getQName : 返回属性的限定名称(前缀)。 getValue : 通过限定(前缀)名称查找属性的值。 请参阅此示例以获取属性名称和值