精华内容
下载资源
问答
  • xml-修复 xml标签修复工具 在命令行中运行 XMLRepair 将从 stdin 读取 xml 标签并包含丢失的标签或将错位的标签移动到正确的位置。 例如,运行“java XMLRepair <<<” ” 将打印: 8
  • package dom4j_read; import java.io.File; import java.util.List; import org.dom4j.Document; import org.dom4j.Element;...import org.dom4j.io.... * 读取xml标签 * getRootElement():获取根标签 * get...
    package dom4j_read;
    
    import java.io.File;
    import java.util.List;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    /**
     * 读取xml的标签
     *		getRootElement():获取根标签
     *		getName():获取标签名称
     *		element("XX"):获取第一个XX名的子标签
     *		elements("XX"):获取所有XX名的子标签
     *		elements():获取所有标签
     *		element().element(). ~~~:可以多次套用
     *		 
     * @author Administrator
     *
     */
    public class Demo02 {
    	public static void main(String[] args) throws Exception {
    		// 创建xml解析器对象
    		SAXReader reader = new SAXReader();
    
    		Document doc = reader.read(new File("./src/contact.xml"));
    
    		// System.out.println(doc);
    		
    		/*
    		 * 读取标签
    		 */
    		// 1.1 读取根标签
    		Element rootElem = doc.getRootElement();
    		System.out.println(rootElem);
    		
    		// 1.2 获取标签名称
    		System.out.println(rootElem.getName());
    		
    		// 1.3 获取第一个子标签
    		Element conElem = rootElem.element("contact");
    		System.out.println(conElem);
    		
    		// 1.4获取所有同名的子标签(指定名字)
    		List<Element> list = rootElem.elements("contact");
    		// 遍历List
    		// 几种方式?
    		// 1)传统for循环
    		/*
    		for(int i=0; i<list.size(); i++) {
    			System.out.println(list.get(i));
    		}
    		*/
    		
    		// 2)foreach循环
    		for(Element e : list) {
    			System.out.println(e);
    		}
    		System.out.println("--------------------------");
    		// 3)迭代器
    		/*
    		Iterator<Element> it = list.iterator();
    		while(it.hasNext()) {
    			Element e =  it.next();
    			System.out.println(e);
    		}
    		*/
    		
    		// 1.5 获取所有子标签(不指定名称)
    		List<Element> eList = rootElem.elements();
    		for(Element e : eList) {
    			System.out.println(e);
    		}
    		System.out.println("--------------------------");
    		// 1.6 拿到第一个contact标签的name标签
    		Element nameElem = rootElem.element("contact").element("name");
    		
    		System.out.println(nameElem);
    		
    	}
    }
    

    xml中,结构如下:

    <?xml version="1.0" encoding="gbk"?>
    <contact-list>
    	<contact id="001" name="eric">
    		<name>张三</name>
    		<gender>男</gender>
    		<phone>134001114</phone>
    		<email>zhangsan@qq.com</email>
    		<address>成都</address>
    	</contact>
    	<contact id="002">
    		<name>李四</name>
    		<gender>男</gender>
    		<phone>134001115</phone>
    		<email>lisi@qq.com</email>
    		<address>广州</address>
    	</contact>
    	<contact id="003">
    		<name>王五</name>
    		<gender>男</gender>
    		<phone>134001116</phone>
    		<email>wangwu@qq.com</email>
    		<address>上海</address>
    	</contact>
    </contact-list>
    

    展开全文
  • Aperio ImageScope xml 读写工具 python

    千次阅读 2020-03-25 11:46:52
    这是一个 Aperio ImageScope 的 XML标签文件读写类 支持读取和写入 方框,轮廓,箭头,椭圆标签。 目前不支持读取和写入 xml 的元数据 注意,因本人习惯原因。坐标排列顺序为 yx,不是xy。 详情更多请参见代码仓库...

    代码储存在
    Github仓库:https://github.com/One-sixth/imagescope_xml_utils

    这是一个 Aperio ImageScope 的 XML标签文件读写类
    支持读取和写入 方框,轮廓,箭头,椭圆标签。
    目前不支持读取和写入 xml 的元数据

    注意,因本人习惯原因。坐标排列顺序为 yx,不是xy。

    详情更多请参见代码仓库Readme

    坐标格式:
    boxes (use_box_y1x1y2x2=True): [y1x1y2x2, y1x1y2x2, …]
    boxes (use_box_y1x1y2x2=False): [[top_left_yx, top_right_yx, bottom_right_yx, bottom_left_yx], [top_left_yx, top_right_yx, bottom_right_yx, bottom_left_yx], …]

    arrows (keep_arrow_tail=True): [[head_yx, tail_yx], [head_yx, tail_yx], …]
    arrows (keep_arrow_tail=False): [head_yx, head_yx, …]

    contours : [[con_yx, con_yx, …], [con_yx, con_yx, …], …]

    ellipses : [[top_left_yx, bottom_right_yx], [top_left_yx, bottom_right_yx], …]

    展开全文
  • 读取labelimg生成的xml标签

    千次阅读 2020-08-08 14:08:27
    这就可以对自己的数据集打标签了,生成xml类型标签 读取文件中所以xml类型 import xml.etree.ElementTree as ET import os sorce = 'C:/Users/msi/Desktop/a/label' # 文件夹路径 dir = os.listdir(sorce) for i...

    win10 在anaconda下输入pip install labelimg,可能下的比较慢,翻墙下载速度很快
    在这里插入图片描述
    在这里插入图片描述
    输入labelimg打开
    在这里插入图片描述
    这就可以对自己的数据集打标签了,生成xml类型标签

    读取文件中所以xml类型
    在这里插入图片描述

    import xml.etree.ElementTree as ET
    import os
       
    sorce = 'C:/Users/msi/Desktop/a/label'  # 文件夹路径
    dir = os.listdir(sorce)
    
    for i in range(len(dir)):
        tree = ET.parse(sorce + '/' + dir[i])
        rect = {}
        line = ""
        root = tree.getroot()
        with open('C:/Users/msi/Desktop/a/unsqueeze/blog.txt', 'a', encoding='utf-8') as f1
            # 路径信息
            for name in root.iter('path'):
                rect['path'] = name.text
            for ob in root.iter('object'):
    
                for bndbox in ob.iter('bndbox'):
                    # for l in bndbox:
                    #     print(l.text)
                    # 坐标信息
                    for xmin in bndbox.iter('xmin'):
                        rect['xmin'] = xmin.text
                    for ymin in bndbox.iter('ymin'):
                        rect['ymin'] = ymin.text
                    for xmax in bndbox.iter('xmax'):
                        rect['xmax'] = xmax.text
                    for ymax in bndbox.iter('ymax'):
                        rect['ymax'] = ymax.text
                    print(rect['xmin'] + ' ' + rect['ymin'] + ' ' + rect['xmax'] + ' ' + rect['ymax'])
                    line = rect['xmin'] + ' ' + rect['ymin'] + ' ' + rect['xmax'] + ' ' + rect['ymax'] + " "
                    f1.write(line)
                    # 文本信息
                    for t in ob.iter('name'):
                        print(t.text)
                        f1.write(t.text + '\n')
    
    

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 二、xml标签读取方法及实现 1、数据文件结构 2、定义xml文件解析器类,用于获取xml文件中的标注信息 3、测试xml文件解析类功能 4、xml文件解析器类实现代码 import numpy as np from xml.etree.ElementTree ...

    标签制作与读取

    这里说的标签制作并非yolov3所需要的标签,而是一般的没有处理的标签

    一、标签的制作

    1、制作工具及制作结果

    制作工具使用的是:labelImg
    在这里插入图片描述用labelimg制作完成后的标签
    在这里插入图片描述

    二、xml标签的读取方法及实现

    1、数据文件结构

    在这里插入图片描述

    2、定义xml文件解析器类,用于获取xml文件中的标注信息

    类名:

    3、测试xml文件解析类功能

    在这里插入图片描述

    4、xml文件解析器类实现代码

    import numpy as np
    from xml.etree.ElementTree import parse  # xml解析器模块
    class PascalVocXmlParser(object):    # 定义xml解析器类
        def __init__(self):
            pass
        # 1、依据xml文件的地址获取标注图片名称
        def get_fname(self, annotation_file):
            '''
            依据xml文件的地址获取标注图片名称
            :param annotation_file: xml文件的地址
            :return: 标注图片名称
            '''
            root = self._root_tag(annotation_file)
            return root.find("filename").text
        # 2、依据xml文件的地址获取标注图片的宽
        def get_width(self, annotation_file):
            '''
            依据xml文件的地址获取标注图片的宽
            :param annotation_file: xml文件的地址
            :return: 标注图片的宽
            '''
            tree = self._tree(annotation_file)
            for elem in tree.iter():
                if 'width' in elem.tag:
                    return int(elem.text)
        # 3、依据xml文件的地址获取标注图片的高
        def get_height(self, annotation_file):
            '''
            依据xml文件的地址获取标注图片的高
            :param annotation_file: xml文件的地址
            :return: 标注图片的高
            '''
            tree = self._tree(annotation_file)
            for elem in tree.iter():
                if 'height' in elem.tag:
                    return int(elem.text)
        # 4、依据xml文件的地址获取标注图片的所有标注框的分类类别
        def get_labels(self, annotation_file):
            '''
            依据xml文件的地址获取标注图片的所有标注框的分类类别
            :param annotation_file: xml文件的地址
            :return: 所有标注框的分类类别列表
            '''
            root = self._root_tag(annotation_file)
            labels = []
            obj_tags = root.findall("object")
            for t in obj_tags:
                labels.append(t.find("name").text)
            return labels
        # 5、依据xml文件的地址获取标注图片的所有标注框的坐标(左上右下形式的坐标)
        def get_boxes(self, annotation_file):
            '''
            依据xml文件的地址获取标注图片的所有标注框的坐标(左上右下形式的坐标)
            :param annotation_file: xml文件的地址
            :return: 依据xml文件的地址获取标注图片的所有标注框的坐标(左上右下形式的坐标)列表
            '''
            root = self._root_tag(annotation_file)
            bbs = []
            obj_tags = root.findall("object")
            for t in obj_tags:
                box_tag = t.find("bndbox")
                x1 = box_tag.find("xmin").text
                y1 = box_tag.find("ymin").text
                x2 = box_tag.find("xmax").text
                y2 = box_tag.find("ymax").text
                box = np.array([int(float(x1)), int(float(y1)), int(float(x2)), int(float(y2))])
                bbs.append(box)
            bbs = np.array(bbs)
            return bbs
        # 6、依据xml文件的地址获取xml文件信息
        def _root_tag(self, fname):
            '''
            依据xml文件的地址获取xml文件信息
            :param fname: xml文件的地址
            :return: xml内容对象
            '''
            tree = parse(fname)
            root = tree.getroot()
            return root
        # 7、依据xml文件的地址获取xml文件解析器
        def _tree(self, fname):
            '''
             依据xml文件的地址获取xml文件解析器
            :param fname: xml文件的地址
            :return: xml解析器
            '''
            tree = parse(fname)
            return tree
    
    
    xmlpath = "D:\\pythonproject\\yolov3\\基于yolov3的门牌号识别\\data\\ann\\2.xml"
    p = PascalVocXmlParser()
    print(p.get_fname(xmlpath))
    print(p.get_width(xmlpath))
    print(p.get_height(xmlpath))
    print(p.get_labels(xmlpath))
    print(p.get_boxes(xmlpath))
    

    三、简单的目录操作

    # 1、获取当前目录
    import os
    PROJECT_ROOT = os.path.dirname(__file__)  # D:/pythonproject/yolov3/基于yolov3的门牌号识别
    # 2、组合字符串
    ann_dir = os.path.join(PROJECT_ROOT, "data", "ann",
                           "*.xml")  # 组合字符串 得到'D:/pythonproject/yolov3/基于yolov3的门牌号识别\\data\\ann\\*.xml'
    img_dir = os.path.join(PROJECT_ROOT, "data", "img")  # 组合字符串 得到'D:/pythonproject/yolov3/基于yolov3的门牌号识别\\data\\img'
    train_ann_fnames = glob.glob(ann_dir)  # 以列表形式获取到当前目录下符合字符串的所有文件的绝对地址,D:\pythonproject\yolov3\基于yolov3的门牌号识别下的data下的img下的所有xml文件的绝对地址
    # 形如 ['D:/pythonproject/yolov3/基于yolov3的门牌号识别\\data\\ann\\1.xml', 'D:/pythonproject/yolov3/基于yolov3的门牌号识别\\data\\ann\\10.xml', 'D:/pythonproject/yolov3/基于yolov3的门牌号识别\\data\\ann\\11.xml']
    

    四、制作标签列表

    将一个标签信息都整合到一个自定义类中

    1、定义一个类,用于存放标签信息

    另外还有就是计算当前的xml文件对应的图片的绝对路径

    class Annotation(object):
        def __init__(self, filename):
            self.fname = filename       # xml文件对应的图片的地址
            self.labels = []            # 存放标注框的分类名称
            self.coded_labels = []      # 存放标注框的分类编码
            self.boxes = None           # 存放一张图上的多个标注框信息的矩阵
    
        def add_object(self, x1, y1, x2, y2, name, code):
            '''
            :param x1: 标注框的左上坐标x值
            :param y1: 标注框的左上坐标y值
            :param x2: 标注框的右下坐标x值
            :param y2: 标注框的右下坐标y值
            :param name: 标注框的分类名称
            :param code: 标注框的分类编码   属于(0,1,...,n)中的一个
            :return:
            '''
            self.labels.append(name)            # 将标注框的分类名称添加到labels列表中
            self.coded_labels.append(code)      # 将标注框的分类编码添加到coded_labels列表中
            
            if self.boxes is None:              # 如果boxes 为空,则将本次标注框信息转化成矩阵格式添加到boxes中
                self.boxes = np.array([x1, y1, x2, y2]).reshape(-1,4)
            else:
                box = np.array([x1, y1, x2, y2]).reshape(-1, 4)      # 将坐标值转换成 矩阵格式 形状为 [x1, y1, x2, y2]
                self.boxes = np.concatenate([self.boxes, box])      # 如果boxes不为空 利用矩阵拼接函数将self.boxes和box拼接到一起,
    

    2、将数据中的所有xml文件信息整合到Annotation类中

    def parse_annotation(ann_fname, img_dir, labels_naming=[]):
        '''
        :param ann_fname: xml文件的地址
        :param img_dir: 存放所有图片的文件夹地址
        :param labels_naming: 标签列表即分类种类 ['分类名1','分类名2',...,'分类名n']
        :return: [图片地址] [[图片中第1个标注框坐标]...[图片中第n个标注框坐标]],[[图片中第1个标注框坐标的分类标签]...[图片中第n个标注框坐标的分类标签]
        例如:D:/pythonproject/yolov3/基于yolov3的门牌号识别\data\img\2.png [[ 99   5 113  28][114   8 122  31][121   6 133  29]] [2, 1, 0]
        '''
        parser = PascalVocXmlParser()
        fname = parser.get_fname(ann_fname)  # 依据xml文件的地址,获取到xml文件对应的标注图片名称
        # os.path.join(img_dir, fname)获取到xml文件对应的图片的地址
        annotation = Annotation(os.path.join(img_dir, fname))  # 创建
    
        labels = parser.get_labels(ann_fname)  # 依据xml文件的地址,获取到xml文件对应的标注图片的所有标注框的分类标签
        boxes = parser.get_boxes(ann_fname)  # 依据xml文件的地址,获取到xml文件对应的标注图片的所有标注框的左上右下坐标
        
        for label, box in zip(labels, boxes):   # 一起遍历 一张图片上的标注框分类标签和标注框
            x1, y1, x2, y2 = box                # 获取到标注框的四个坐标值
            if label in labels_naming:          # 如果标注框分类标签在目标分类种类中 即 ['分类名1','分类名2',...,'分类名n']中
                # labels_naming.index(label) 计算label在['分类名1','分类名2',...,'分类名n']中的下标,作为分类的编码
                annotation.add_object(x1, y1, x2, y2, name=label, code=labels_naming.index(label))  # 将标注框信息添加到annotation类的boxes属性中
        return annotation.fname, annotation.boxes, annotation.coded_labels  # 返回一张图片的所有标注框的分类名称,标注框信息,编码标签
    

    五、总结

    通过函数parse_annotation()可以读取到一个xml文件的信息,并能过获取到xml文件对应的图片的地址。
    例如:
    D:/pythonproject/yolov3/基于yolov3的门牌号识别\data\img\2.png --xml文件对应的图片的地址。
    [[ 99 5 113 28][114 8 122 31][121 6 133 29]] --图片上的anchor的左上右下坐标
    [2, 1, 0] --每个anchor的分类

    展开全文
  • java读取XML文件通用工具类(递归调用) 源代码下载地址:http://www.zuidaima.com/share/1550463285480448.htm
  • java读取XML文件通用工具类 递归调用
  • 前段时间用到了yolov3训练自己的数据集,发现里面的voc_label.py xml标签文件转成txt文件,稍微有点不太方便。所以在它的基础上自己稍微改了下,以便日后使用。下面是代码: import xml.etree.ElementTree as ET ...
  • public class XmlToMapDemp { /* xml内容示例 <?xml version="1.0" encoding="UTF-8"?> <ROOT> <ONE> <TWO>value-two</TWO> ...
  • xml工具箱phpcms

    2017-11-02 14:14:12
    标签使用 —— 工具箱 —— xml工具xml工具箱 V9提供XML工具箱,可以方便的调用外部XML资源到网页中显示。 XML工具箱调用方式 1 {pc:xml url="A href=...
  • iOS XML 解析常用工具

    2017-01-08 02:49:27
    XML 文档操作有“读”和“写”,读入 XML 文档并分析的过程称为“解析...解析 XML 文档时,程序从上到下读取 XML 文档,如果遇到开始标签、结束标签和属性等,就会触发相应的事件。但是这种解析 XML 文件时有一个弊端,
  • 这里将工作中用到的两个工具分享一下:(1)、系统文件操作工具(2)、XML读写配置文件工具。 目录 文件操作工具 XML配置文件读写 XML配置文件读取示例 文件操作工具 using System; using System.Collections...
  • Xml读取方式

    千次阅读 2019-08-22 12:04:28
    XML 1 每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,<?xml version="1.0"?> 2 任何的起始标签都必须有一个结束标签。...XML文档读取XML中的内容都是结点”,这句话...
  • 在今后的Java学习过程中,...下面就将之前所讲的《XML文件解析》进行工具化,使其适用于大多数解析情况。 如果看不懂这篇文章,可以先看看前面提到的,了解一下XML解析的基本过程。 一、思路 为了使解析过程工具化,...
  • XML 解析生成工具

    千次阅读 2017-03-01 15:55:37
    // 模块名:轻量级XML工具 // 创建者:Cheng // 修改者列表: // 创建日期:2/28/2017 // 模块描述: //----------------------------------------------------------------*/ namespace Garson { public class XML...
  • 例如我在做仓储托盘检测的时候,需要对图片中的托盘进行标注,标注的标签信息会保存到一个跟图片对应的xml文件中(每张图片与每个xml文件一一对应),xml中的信息如下: <annotation> <folder>Images&...
  • 在程序开发的过程中常常涉及到XML文件的读写,如果对XML语言有一定的了解,...XML标签没有被预定义。您需要自行定义标签 XML被设计为具有自我描述性。 XML是W3C的推荐标准 XML是独立于软件和硬件的信息传输工具,XML
  • XMLParser 是一款Android XML文件解析生成工具,通过注解的方式来实现XML文件内标签的生成和解析。 使用gradle引入 compile 'lee.hua.xmlparse:xmlparse:2.3.0' 简单使用 场景:一个关于书本信息的描述,一本...
  • xml标签之间,存在着明显的一对多的关系,是一种“树形解析器”,我们通过代码来解析出xml文件中的某些属性对应的值。 看一段xml,我们对其进行解析:`` <?xml version="1.0" encoding="UTF-8"?> <...
  • scala解析xml工具

    千次阅读 2018-09-03 09:19:39
    解析xml至Map ... * 读取xml 至map */ def readXml2Map(filePath: String): scala.collection.mutable.Map[String, String] = { val xmlFile = XML.loadFile(filePath) // 根节点 val child...
  • 基于CMarkup的xml文件读写

    千次阅读 2016-11-15 17:23:01
    基于CMarkup的xml文件读写写在前面:因为本文是基于CMarkup进行的xml文件的读写,所以需要参考CMarkup的官方网站 1.官方说明文档网站 http://www.firstobject.com/fast-start-to-xml-in-c++.htm 2.官方文件下载 ...
  • 首先要注意的是,js读取xml文件应该放置到服务器启动:     1.scene.xml   &lt;?xml version="1.0" encoding="utf-8" ?&gt; &lt;回家&gt; &lt;灯光&gt; ...
  • 在.NET框架的System.XML名称空间中包含的XMLTextReader类不需要对系统资源要求很高,就能从XML文件中快速读取数据。使用XMLTextReader类能够从XML文件中读取数据,并且将其转换为HTML格式在浏览器中输出。 读本文...
  • 目标检测中将xml标签转换为txt(voc格式转换为yolo) xml格式: ".xml"格式是可扩展标记语言,因其可以跨越多平台的属性,成为网络数据传输的重要工具。如下图所示,xml格式数据特点就是简单易理解,清晰易操控。...
  • java中通常需要将一些客户端设置项写在配置文件中,以避免重复编译导致的繁琐...xml文件:config.xml<?xml version="1.0" encoding="UTF-8" ?> <charType>B <className>DatabaseLoggerFactory 现在要读取该文件中的
  • 读写Xml文件

    2015-09-30 11:12:58
     Xml的主要功能是存储、数据传输,那么如何通过xml文件进行数据读写,是本文关注的重点。  Xml读写方式分为两种,一种是面向事件的SAX方式,另一种是面向模型的DOM方式。我们常常用的dom4j读取就是SAX读取方式的...
  • XML与使用DOM读取XML数据 XML简介 XML是Extensible Markup Language的缩写,即可扩展标记语言,是一种简单的数据存储语言,使用一系列简单的标记来描述结构化数据。 XML特点: XML与操作系统、编程语言的开发平台都...
  • String xml = readTxtFile(file.getAbsolutePath()); System.out.println(xml); try { List, Object>> returnList = parseMessageXml(xml); } catch (DocumentException e) { e.printStackTrace(); } ...
  • xml标签: |字号大中小 订阅 在这里开始书写日记、心情 …今天看了看java.beans包,发现了两个好东西,XMLEncoder和XMLDecoder。发现自己以前把从XML存取对象真是太费力气啦。做了小工具类,以后可以用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,845
精华内容 29,138
关键字:

xml标签读取工具