Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 定义名称空间标记以便生成的XML具有这些标记?_Java_Xml_Xstream - Fatal编程技术网

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

Java 定义名称空间标记以便生成的XML具有这些标记?,java,xml,xstream,Java,Xml,Xstream,我有两个类People.java和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 S

我有两个类People.java和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);    
    }
}
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>

曼尼什·夏尔马
21
但是我想要一个输出

<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>

曼尼什·夏尔马
21

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

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

不是每个XML解析器都支持名称空间,也不是每个支持名称空间的XML解析器都支持名称空间 支持可以在XStream中配置名称空间以使用这些名称空间。 基本上,名称空间必须分别支持不同的 XML解析器和当前唯一支持的名称空间 已经在XStream中实现的是针对StAX paser的。因此使用和 配置XStream的StatxDriver以使用名称空间


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

不是每个XML解析器都支持名称空间,也不是每个支持名称空间的XML解析器都支持名称空间 支持可以在XStream中配置名称空间以使用这些名称空间。 基本上,名称空间必须分别支持不同的 XML解析器和当前唯一支持的名称空间 已经在XStream中实现的是针对StAX paser的。因此使用和 配置XStream的StatxDriver以使用名称空间


好的,我可以通过JaxB来完成吗?如果可以,请发布一个答案来完成,这里Xstream对我来说并不重要,谢谢你的回答是的,JaxB可以完成名称空间;请参阅。抱歉,这并没有告诉您如何在.java文件中放置两个不同的名称空间,因为只有一个名称空间ns0。如果这个问题与您的要求不符,请查看相关部分中的链接。如果这些都不适合你的情况,你应该问一个新的问题,而不是在评论中扩展这个对话。谢谢。JAXB大师Blaise Doughan已经给出了一个很好的答案。好的,我可以通过JaxB来完成吗?如果可以,请发布一个答案来完成,这里Xstream对我来说并不重要,谢谢你的回答是的,JaxB可以完成名称空间;请参阅。抱歉,这并没有告诉您如何在.java文件中放置两个不同的名称空间,因为只有一个名称空间ns0。如果这个问题与您的要求不符,请查看相关部分中的链接。如果这些都不适合你的情况,你应该问一个新的问题,而不是在评论中扩展这个对话。谢谢。JAXB大师Blaise Doughan已经给出了一个很好的答案。随它去吧。