XML в объект Java - PullRequest
       4

XML в объект Java

3 голосов
/ 15 июля 2011

Я пытаюсь преобразовать файл XML в объект Java, теперь я прочитал JAXB, XStream, Sax и DOM, я хотел бы преобразовать этот тип xml:

<testxml testtype="converting" duration="100.00" status="successful" />

это может быть так же, как:

<testxml testype="converting" duration="100.00"> successful </textxml>

Я хотел бы знать, есть ли что-нибудь (и, возможно, не третье лицо), которое я могу использовать, без объявления шаблона в DTD или в JAXB вXSD, но Java (поэтому я объявлю java-класс testxml со всеми соответствующими переменными, т.е. testtype, duration, status>

Спасибо всем за потраченное время.

Ответы [ 4 ]

11 голосов
/ 15 июля 2011

Класс ниже с использованием JAXB Annotations будет делать именно то, что вам нужно, не нужно создавать XSD или шаблон с использованием Java 1.6 +:

@XmlRootElement
public class TestXML {
  private String testtype;
  private double duration;
  private String status;

  public void setTesttype(String testtype) {
    this.testtype = testtype;
  }
  @XmlAttribute
  public String getTesttype() {
    return testtype;
  }
  public void setDuration(double duration) {
    this.duration = duration;
  }
  @XmlAttribute
  public double getDuration() {
    return duration;
  }
  public void setStatus(String status) {
    this.status = status;
  }
  @XmlValue
  public String getStatus() {
    return status;
  }

  public static void main(String args[]) {
    TestXML test = JAXB.unmarshal(new File("test.xml"), TestXML.class);

    System.out.println("testtype = " + test.getTesttype());
    System.out.println("duration = " + test.getDuration());
    System.out.println("status = " + test.getStatus());
  }
}

Используя это как test.xml:

<testxml testtype="converting" duration="100.00"> successful </testxml>
3 голосов
/ 15 июля 2011

Вы можете сделать это довольно просто, используя java.xml.bind.annotations в классе Java и JAXB.Unmarshal

JAXB является частью JRE в Java 1.6 +

1 голос
/ 15 июля 2011

Попробуйте XStream / XPP3.Это хорошо.Занимает пару часов, чтобы разобраться.Делает всю магию за вас.

0 голосов
/ 15 июля 2011

Лично я использую XStream @ http://x -stream.github.io / Он действительно прост в использовании и все еще предлагает достаточно функций, если они вам нужны.К сожалению, похоже, что проект больше не поддерживается, но я пока не видел альтернативы, которая бы также отвечала моим потребностям.Я бы сказал, что стоит потратить немного времени, чтобы проверить это; -)

edit: когда вы можете использовать Java 6, я полностью согласен, что другие ответы предпочтительнее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...