数据集生成Xml 格式文件

//数据集生成Xml 格式文件
function makeXml(Dataset:TADODataSet;XMLRootName:string):Integer;
var
    i   : Integer;
    xml : String;
    temp:Variant;
    doc : IXMLDOMDocument;
    root,child,child1 : IXMLDomElement;
    a:TFieldType;
{函数功能:将Dataset 转换成 XML 格式文件}
begin
    try

      if Dataset.Active =false then Dataset.Active:=true;
      xml:=XMLRootName;
      //doc --> root --> first level(child) --> second level(child1) --> child1 value
      doc  :=  CoDOMDocument60.Create;   // 调用 MS XML 6.0 控件建立 DOC --> IXMLDomDocument3
      //设置 xml 根节点
      root := doc.createElement(xml);    //建立 IXMLDomDocument 的根节点元素 root --> IXMLDOMElement
      doc.appendchild(root);
      // 生成 xml 文件过程
      //while not table.eof do
      with DataSet do
      begin
      while not eof do
      begin
        //添加第一层 节点 , Records
        child:= doc.createElement('Records');         //建立 root 根节点的第一层节点元素 child --> IXMLDOMElement
        root.appendchild(child);
        for i:=0 to FieldCount-1 do
        begin
          //添加第二层子节点 字段名与值
          child1:=doc.createElement(Fields[i].FieldName);  //建立 child 第一层节点元素的第二层节点元素 child1 --> IXMLDOMElement
          child.appendchild(child1);    //字段名

          //检查字段 类型 ,赋值给 temp
          case TFieldType(Ord(Fields[i].DataType)) of
          ftString,ftWideString:
            begin
              if Fields[i].AsString ='' then
                 temp :=' '  //Put a default string
               else
                 temp := Fields[i].AsString;
            end;

          ftInteger,ftLargeint, ftWord, ftSmallint:
            begin
              if Fields[i].AsInteger > 0 then
                 temp := IntToStr(Fields[i].AsInteger)
               else
                 temp := '0';
            end;
          ftFloat, ftCurrency, ftBCD:
            begin
              if Fields[i].AsFloat > 0 then
                temp := FloatToStr(Fields[i].AsFloat)
              else
                 temp := '0';
            end;
          ftBoolean:
            begin
              if Fields[i].Value then
                temp:= True
              else
                temp:= False;
            end;
          ftDate:
            begin
              if (not Fields[i].IsNull) or
                 (Length(Trim(Fields[i].AsString)) > 0) then
                temp := FormatDateTime('MM/DD/YYYY',Fields[i].AsDateTime)
              else
                temp:= '01/01/2000'; //预设日期
            end;
          ftDateTime:
            begin
              if (not Fields[i].IsNull) or
                 (Length(Trim(Fields[i].AsString)) > 0) then
                temp := FormatDateTime('MM/DD/YYYY hh:nn:ss',Fields[i].AsDateTime)
              else
                temp := '01/01/2000 00:00:00'; //预设日期时间
           end;
          ftTime:
            begin
              if (not Fields[i].IsNull) or
                 (Length(Trim(Fields[i].AsString)) > 0) then
                 temp := FormatDateTime('hh:nn:ss',Fields[i].AsDateTime)
              else
                 temp := '00:00:00'; //预设时间
            end;
        end;
         //
         child1.appendChild(doc.createTextNode(temp));   // 字段名对应的值
        end;
      Next;
      end;   // eof
      end;  // with
      XMLStr:=doc.xml;
      //memo1.lines.Append(doc.xml);
      Result:=1;
    except
      on e:Exception do
        Result:=-1;
    end;
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将txt文件转换为VOC数据集xml格式,需要进行以下步骤: 1. 创建VOC数据集xml文件模板。 2. 读取txt文件中的标注信息,包括类别、位置信息等。 3. 将读取到的信息填充到xml文件模板中。 4. 将生成xml文件保存到指定的目录中。 以下是一个简单的Python代码实现: ```python import os import xml.etree.cElementTree as ET def txt_to_xml(txt_file_path, xml_file_path, image_size, class_list): # 创建xml文件模板 root = ET.Element("annotation") ET.SubElement(root, "folder").text = os.path.dirname(txt_file_path) ET.SubElement(root, "filename").text = os.path.basename(txt_file_path).replace('.txt', '.jpg') size = ET.SubElement(root, "size") ET.SubElement(size, "width").text = str(image_size[0]) ET.SubElement(size, "height").text = str(image_size[1]) ET.SubElement(size, "depth").text = str(image_size[2]) for cls in class_list: ET.SubElement(root, "object") # 读取txt文件中的标注信息 with open(txt_file_path, 'r') as f: lines = f.readlines() for line in lines: line = line.strip().split() cls = line[0] xmin, ymin, xmax, ymax = line[1:] # 将标注信息填充到xml文件模板中 obj = ET.SubElement(root, "object") ET.SubElement(obj, "name").text = cls bndbox = ET.SubElement(obj, "bndbox") ET.SubElement(bndbox, "xmin").text = xmin ET.SubElement(bndbox, "ymin").text = ymin ET.SubElement(bndbox, "xmax").text = xmax ET.SubElement(bndbox, "ymax").text = ymax # 保存生成xml文件 tree = ET.ElementTree(root) tree.write(xml_file_path) # 示例代码 txt_file_path = 'path/to/annotation.txt' xml_file_path = 'path/to/annotation.xml' image_size = (640, 480, 3) class_list = ['person', 'car', 'bike'] txt_to_xml(txt_file_path, xml_file_path, image_size, class_list) ``` 注意:以上代码仅是一个简单的示例,具体实现需要根据自己的数据集格式和要求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值