我正在尝试获取xml文件的值。
<p1>
<cts>Pq44</cts>
<cts>qw44</cts>
</p1>
P1.JAVA
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class P1 {
private List<Cts> cts;
public P1() {
cts = new ArrayList<cts>();
}
public List<cts> getcts() {
return cts;
}
public void setcts(List<cts> cts) {
this.cts = cts;
}
}
CTS.JAVA
public class CTS {
private String ct;
// Getter and setter for ct.
}
我的Main.java
try {
File file = new File("D:\\Bye.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(P1.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
P1 p = (P1) jaxbUnmarshaller.unmarshal(file);
List<CTS> cts = p.getCTS();
// Size of list coming right `2`
for (CTS c : cts) {
System.out.println(CTS2.getCT());
}
} catch (JAXBException e) {
e.printStackTrace();
}
当我运行main.java时,它会打印:
null
null
答案 0 :(得分:1)
我认为你的循环应该看起来像
for (CTS c : cts) {
System.out.println(c.getCt());
}
答案 1 :(得分:1)
您可以使用@XmlValue
并执行以下操作:
<强> CTS 强>
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
public class CTS {
@XmlValue
private String ct;
public String getCt() {
return ct;
}
public void setCt(String ct) {
this.ct = ct;
}
}
<强> P1 强>
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class P1 {
private List<CTS> cts;
public P1() {
cts = new ArrayList<CTS>();
}
public List<CTS> getCts() {
return cts;
}
public void setCts(List<CTS> cts) {
this.cts = cts;
}
}
<强> p1.xml 强>
<p1>
<cts>Pq44</cts>
<cts>qw44</cts>
</p1>
应用强>
import java.io.File;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args ) throws JAXBException
{
System.out.println( "Hello World!" );
String filePath = ".\\p1.xml";
File file = new File(filePath);
JAXBContext jaxbContext = JAXBContext.newInstance(P1.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
P1 p = (P1) jaxbUnmarshaller.unmarshal(file);
List<CTS> cts = p.getCts();
// Size of list coming right `2`
for (CTS c : cts) {
System.out.println(c.getCt());
}
}
}
<强>输出强>
Hello World!
Pq44
qw44
答案 2 :(得分:-2)
我做了一些工作。我发布的代码将用于基于XML的文件。
<强> p1.xml 强>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<p1>
<cts>Pq44</cts>
<cts>qw44</cts>
</p1>
<强> P1.java 强>
import java.util.ArrayList;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "p1")
public class P1 {
private ArrayList<String> cts;
public ArrayList<String> getCts() {
return cts;
}
public void setCts(ArrayList<String> cts) {
this.cts = cts;
}
}
<强> TestApp.java 强>
import java.io.File;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args ) throws JAXBException
{
System.out.println( "Hello World!" );
String filePath = ".\\p1.xml";
File file = new File(filePath);
JAXBContext jaxbContext = JAXBContext.newInstance(P1.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
P1 p = (P1) jaxbUnmarshaller.unmarshal(file);
List<String> cts = p.getCts();
// Size of list coming right `2`
for (String c : cts) {
System.out.println(c);
}
}
}
尝试这种方式它会正常工作。
<强>输出强>
Hello World!
Pq44
qw44