Java 定义名称空间标记以便生成的XML具有这些标记?
我有两个类People.java和PeopleMain.javaJava 定义名称空间标记以便生成的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
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已经给出了一个很好的答案。随它去吧。