1.问题是:xmlns属性为什么没有加进去呢?
直接放代码(结果图在后面)
public static void main(String[] args){
XMLWriter writer=null;
FileOutputStream out=null;
try {
Document doc = DocumentHelper.createDocument();
Element Cole = doc.addElement("Cole");
Cole.addAttribute("xmlns","http://www.gzrst.gov.cn/DA");
Cole.addAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
Cole.addAttribute("xsi:schemaLocation","http://www.gzrst.gov.cn/DA SIP.xsd");
out = new FileOutputStream("d:/test2.xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
writer = new XMLWriter(out,format);
writer.write(doc);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2.结果:
改一句就可以了:
Document doc = DocumentHelper.createDocument();
Element Cole = doc.addElement("Cole");
Namespace namespace = Namespace.get("http://www.gzrst.gov.cn/DA");
// Cole.addAttribute("xmlns","http://www.gzrst.gov.cn/DA");
Cole.add(namespace);
Cole.addAttribute("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
Cole.addAttribute("xsi:schemaLocation","http://www.gzrst.gov.cn/DA SIP.xsd");
重写onEnd()和onStart()方法
public class XmlElementHandler implements ElementHandler {
@Override
public void onEnd(ElementPath arg0) {
Element ele = arg0.getCurrent();
String name = ele.getName();
try
{
//保存"MT"标签的属性到内存
if("MT".equals(name))
{
String mTvalue = ele.getTextTrim();
ParaCollect.getInstance().put("MT", mTvalue);
}
//保存"SubNo"标签的属性到内存
if("SubNo".equals(name))
{
String subNovalue = ele.getTextTrim();
ParaCollect.getInstance().put("localPeriods", subNovalue);
}
//保存"Freq"标签的属性到内存
if("Freq".equals(name))
{
String Freqvalue = ele.getTextTrim();
ParaCollect.getInstance().put("localFreq", Freqvalue);
}
//保存"SubCode"标签的属性到内存
if("SubCode".equals(name))
{
String SubCodevalue = ele.getTextTrim();
ParaCollect.getInstance().put("localSubCode", SubCodevalue);
}
} catch (Exception e) {
}
}
@Override
public void onStart(ElementPath arg0) { }
}
获取标签属性
String xmlps = “xml文件路径”;
/*************解析xml中标签SubNo的属性 begin************************/
SAXReader reader;
try
{
InputStream in= new FileInputStream(new File(xmlps));
ElementHandler manElementHandler=(ElementHandler) new XmlElementHandler();
reader=new SAXReader();
reader.addHandler("/Document/SubNo", manElementHandler);
reader.addHandler("/Document/Freq", manElementHandler);
reader.addHandler("/Document/SubCode", manElementHandler);
reader.read(in);
}
catch (Exception e)
{
log.error("公共检查解析xml异常", e);
}