obj转xml

用的是jdk自带的javax.xml.bind.JAXBContext将对象和xml字符串进行相互转换。
       如果对要生成的 xml 格式有点些许的限制,就会对生成xml的对象就需要进行些许控制,控制对象的一个最可行的办法就是用注解。
 
       比较常用的几个:
       @XmlRootElement:根节点
       @XmlAttribute:该属性作为xml的attribute
       @XmlElement:该属性作为xml的element,且可以增加属性(name="NewElementName"),那么生成的xml串的elment的标签是NewElementName


 package org.com.it.bean;
package org.com.it.bean;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="rootclass")
public class RootClass {

    private EleClassA a;  
    private EleClassB b;  
    private String root;  
    private String rootA;  
      
    @XmlElement(name="eleClassA")  
    public EleClassA getA() {  
        return a;  
    }  
    public void setA(EleClassA a) {  
        this.a = a;  
    }  
    @XmlElement(name="EleclassA")  
    public EleClassB getB() {  
        return b;  
    }  
    public void setB(EleClassB b) {  
        this.b = b;  
    }  
    public String getRoot() {  
        return root;  
    }  
    public void setRoot(String root) {  
        this.root = root;  
    }  
    public String getRootA() {  
        return rootA;  
    }  
    public void setRootA(String rootA) {  
        this.rootA = rootA;  
    }  
}



 

package org.com.it.bean;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;

public class EleClassA {

    
     private String eleA;  
        private String eleB;  
          
        private String attrC;  
      
        @XmlElement  
        public String getEleA() {  
            return eleA;  
        }  
      
        public void setEleA(String eleA) {  
            this.eleA = eleA;  
        }  
      
        @XmlElement(name="elebnewname")  
        public String getEleB() {  
            return eleB;  
        }  
      
        public void setEleB(String eleB) {  
            this.eleB = eleB;  
        }  
      
        @XmlAttribute()  
        public String getAttrC() {  
            return attrC;  
        }  
      
        public void setAttrC(String attrC) {  
            this.attrC = attrC;  
        }  
}

 



package org.com.it.bean;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;

public class EleClassB {

     private String attrUserName;  
        private String attrPassword;  
          
        private String eleCode;  
          
        @XmlAttribute  
        public String getAttrUserName() {  
            return attrUserName;  
        }  
        public void setAttrUserName(String attrUserName) {  
            this.attrUserName = attrUserName;  
        }  
        @XmlAttribute(name="password")  
        public String getAttrPassword() {  
            return attrPassword;  
        }  
        public void setAttrPassword(String attrPassword) {  
            this.attrPassword = attrPassword;  
        }  
        @XmlElement  
        public String getEleCode() {  
            return eleCode;  
        }  
        public void setEleCode(String eleCode) {  
            this.eleCode = eleCode;  
        }  
}

 

package org.com.it.util;

import java.io.StringWriter;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

import org.com.it.bean.EleClassA;
import org.com.it.bean.EleClassB;
import org.com.it.bean.RootClass;

public class Test {

     public static void main(String[] args) {  
            RootClass rc = new RootClass();  
            EleClassA a = new EleClassA();  
            EleClassB b = new EleClassB();  
              
            a.setAttrC("attrc");  
            a.setEleA("eleA");  
            a.setEleB("eleB");  
              
            b.setAttrPassword("attrPassword");  
            b.setAttrUserName("attrUsrName");  
            b.setEleCode("eleCode");  
              
            rc.setA(a);  
            rc.setB(b);  
            rc.setRoot("root");  
            rc.setRootA("rootA");  
              
              
            JAXBContext context;  
            try {  
                context = JAXBContext.newInstance(RootClass.class);  
                Marshaller mar = context.createMarshaller();  
                mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);  
                mar.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");  
                  
                StringWriter writer = new StringWriter();  
                  
                mar.marshal(rc, writer);  
                  
                System.out.println(writer.toString());  
            } catch (JAXBException e) {  
                e.printStackTrace();  
            }  
              
        }
}

 

结果

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rootclass>
    <eleClassA attrC="attrc">
        <eleA>eleA</eleA>
        <elebnewname>eleB</elebnewname>
    </eleClassA>
    <EleclassA password="attrPassword" attrUserName="attrUsrName">
        <eleCode>eleCode</eleCode>
    </EleclassA>
    <root>root</root>
    <rootA>rootA</rootA>
</rootclass>

 







  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Darknet是一个开源的深度学习框架,它被广泛用于计算机视觉任务,包括目标检测和分类。Darknet有一个功能强大的命令行工具,可以将目标检测模型的输出结果以XML的格式保存起来。而将XML格式的文件换为txt格式是相对简单的。 要将Darknet生成的XML文件换为txt格式,我们可以使用Python编程语言。首先,我们需要使用Python的xml.etree.ElementTree模块来解析XML文件。然后,我们可以遍历XML文件的结构,提取出我们需要的信息,如对象的类别、边界框的坐标等。最后,我们可以将提取出的信息按照一定格式保存到txt文件中。 下面是一个示例代码,可以实现将Darknet生成的XML文件换为txt的功能: ```python import xml.etree.ElementTree as ET def xml_to_txt(xml_file, txt_file): tree = ET.parse(xml_file) root = tree.getroot() with open(txt_file, 'w') as f: for obj in root.iter('object'): cls = obj.find('name').text bbox = obj.find('bndbox') xmin = bbox.find('xmin').text ymin = bbox.find('ymin').text xmax = bbox.find('xmax').text ymax = bbox.find('ymax').text line = f"{cls} {xmin} {ymin} {xmax} {ymax}\n" f.write(line) # 使用示例 xml_file = 'input.xml' txt_file = 'output.txt' xml_to_txt(xml_file, txt_file) ``` 在上面的示例代码中,我们定义了一个函数`xml_to_txt`,该函数接受两个参数,即要换的XML文件路径和保存换结果的txt文件路径。代码中使用`xml.etree.ElementTree`模块来解析XML文件,并遍历XML文件的结构,提取出对象的类别、边界框的坐标等信息。然后,将提取出的信息按照一定格式写入到txt文件中。 使用该函数,您可以将Darknet生成的XML文件换为txt格式,方便后续的处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值