今天在做xmlbeans的时候,发现生成的xml字符串都带有前缀“myx”:
<myx:book xmlns:myx="http://www.example.org/MyXMLSchema"> <myx:date>2000-3-9</myx:date> <myx:name>sjs</myx:name> <myx:price>800</myx:price> </myx:book>
在网上查了好久,终于查到了解决办法:
StringBuffer xmlGen = new StringBuffer();
BookDocument doc = null;
try {
/*
增加 XmlOptions;
之前输出:
<myx:book xmlns:myx="http://www.example.org/MyXMLSchema"><myx:date>2000-3-9</myx:date><myx:name>sjs</myx:name><myx:price>800</myx:price></myx:book>
之后输出:
<book xmlns="http://www.example.org/MyXMLSchema"><date>2000-3-9</date><name>sjs</name><price>800</price></book>
* */
XmlOptions xo = new XmlOptions();
xo.setUseDefaultNamespace();
doc = BookDocument.Factory.newInstance();
Book b = doc.addNewBook();
b.setDate("2000-3-9");
b.setName("sjs");
b.setPrice(800);
/*doc.xmlText(xo) 需要加上xo,否则输出的xml字符串标签前有前缀*/
xmlGen.append(doc.xmlText(xo));//xml字符串
也就是在将XML文档转化为text时,需要增加XmlOptions参数;并且需要将该参数设置为xo.setUseDefaultNamespace();
增加之后输出的XML就去掉了前缀“myx”:
<book xmlns="http://www.example.org/MyXMLSchema"> <date>2000-3-9</date> <name>sjs</name> <price>800</price> </book>
至此,该问题解决。