定义名称空间标记,以便生成的XML具有这些标记?

时间:2013-11-27 18:14:35

标签: java xml xstream

我有两个类People.java和PeopleMain.java

People.java

package com.test;

public class People {

    private String name;
    private String age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }   

}

PeopleMain.java

package com.test;

import com.thoughtworks.xstream.XStream;

public class PeopleMain {

    public static void main(String args[]){

        People p= new People();

        p.setAge("21");
        p.setName("Manish Sharma");

        XStream xs =new XStream();

        String xml = xs.toXML(p);

        System.out.println(xml);    
    }
}

运行PeopleMain.java时我在控制台上的输出如下:

<com.test.People>
  <name>Manish Sharma</name>
  <age>21</age>
</com.test.People>

但我希望输出为

<People xmlns:ns2="http://example.com/foo" xmlns:ns3="http://example.com/bar">
  <ns2:name>Manish Sharma</ns2:name>
  <ns3:age>21</ns3:age>
</People>

我应该在People.java文件中进行哪些更改才能获得所需的输出?

1 个答案:

答案 0 :(得分:1)

不幸的是,根据XSTream FAQ,除非使用StAX解析器,否则XStream不支持XML命名空间。

  

并非每个XML解析器都支持名称空间,而不是每个XML解析器都支持名称空间   支持名称空间可以在XStream中配置使用它们。   基本上,名称空间必须单独支持不同的名称空间   XML解析器以及当前对命名空间的唯一支持   已在XStream中实现,适用于StAX paser。因此使用和   配置XStream的StaxDriver以使用名称空间。