【问题标题】:Convert XML file to class variable?将 XML 文件转换为类变量?
【发布时间】:2015-02-11 06:16:48
【问题描述】:

我在 XStream 上乱搞以习惯使用它。我可以将我的 Person 变量转换为 XML 来给我这个

<list>
  <Person>
  <name>Mitch</name>
  <age>17</age>
  <adress>Yehaaa</adress>
  <fav-hobbie>Programming</fav-hobbie>
 </Person>
 <Person>
  <name>Ant</name>
  <age>18</age>
  <adress>Mitch&apos;s House</adress>
  <fav-hobbie>Football</fav-hobbie>
 </Person>
</list>

我想知道如何读取 XML 文件并从 xml 文件中创建一个包含姓名、地址、年龄和爱好的新人员变量?

这是我的代码

public class base {

    static XStream xstream = new XStream(new DomDriver());
    static NewPerson person1 = new NewPerson();
    static NewPerson person2 = new NewPerson();

    static List<NewPerson> persons = new ArrayList();


    public base(){

    }

    public static void main(String[] args) throws FileNotFoundException{
        persons.add(person1);
        persons.add(person2);
        person1.name = "Mitch";
        person1.adress = "52 Hope Street";
        person1.age = 17;
        person1.hobbie = "Programming";
        person2.name = "Ant";
        person2.adress = "Mitch's House";
        person2.age = 18;
        person2.hobbie = "Football";

        String str = "res/file.xml";

        xstream.processAnnotations(NewPerson.class);
        xstream.toXML(persons, System.out);

    }
}


@XStreamAlias("Person")
class NewPerson {

    @XStreamAlias("name")
    String name;

    @XStreamAlias("age")
    int age;

    @XStreamAlias("adress")
    String adress;

    @XStreamAlias("fav-hobbie")
    String hobbie;
}

谁能提供任何示例代码来演示如何从 xml 文件创建一个新的 Person 变量

【问题讨论】:

  • 阅读2 min tutorial怎么样?
  • 我已经阅读了它,但无法让它工作

标签: java xml xstream


【解决方案1】:

从他们的教程中,

String xml = xstream.toXML(persons);
List<Person> personList= (List<Person>)xstream.fromXML(xml);

【讨论】:

  • 在 fromXML 括号中是否放置了指向我的 XML 文件的链接?如果是这样,我已经尝试过了,但我无法让它工作
  • 不,它需要一个包含实际 XML 的字符串。我将进行编辑以显示它是从您制作的内容转换而来的。
【解决方案2】:

你也可以这样做:

public class Test{
    public static void main(String args[]){
    FileReader xmlReader = new FileReader("filePerson.xml");//File.xml will containe the xml content which you want to parse
    XStream stream = new XStream(new StaxDriver());
    stream.alias("Person",Person.class);

    ArrayList<Person> person = (ArrayList<Person>) stream.fromXML(xmlReader);
    //If you want to retrieve then you can use iterator or foreach loop
    for(Person P: person){
     //        Write your logic
    }

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 2013-11-26
    • 2014-05-31
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2021-01-01
    • 2011-03-05
    • 2015-10-28
    相关资源
    最近更新 更多