C# XML文件(相机参数保存和读取)

这篇具有很好参考价值的文章主要介绍了C# XML文件(相机参数保存和读取)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. XML基础

XML是可扩展标记语言(Extensible Markup Language,XML)是一种数据语言,它将数据以一种简单的文本格式存储,可以被人类和几乎任何计算机理解。Microsoft在.Net Framework和其他微软产品中已经完全采用它。
XML的基本格式:

<book>
    <title>Beginning Visual C# 7</title>
    <author>Benjamin Perkins et al</author>
    <code>458685</code>
</book>

2. XML基本操作

C#操作XML方法详解

3. 相机参数保存和读取

  • 创建一个相机参数XML文件保存和读取的类CameraXML
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace xmlTest
{
    class Camera
    {
        public string camID;
        public int camExposure;
        public int camGain;

        public Camera()
        {
            camID = "nullID";
            camExposure = 5000;
            camGain = 0;
        }

        public Camera(string camID, int camExposure, int camGain)
        {
            this.camID = camID;
            this.camExposure = camExposure;
            this.camGain = camGain;
        }
    }

    class CameraXML
    {
        /// <summary>
        /// 创建相机XML文件
        /// </summary>
        /// <param name="xmlFilePath">存储路径</param>
        /// <param name="cameraList">相机列表</param>
        public static void GenerateCameraXMLFile(string xmlFilePath, List<Camera> cameraList)
        {
            try
            {
                //初始化一个xml实例
                XmlDocument myXmlDoc = new XmlDocument();
                //创建xml的根节点
                XmlElement rootElement = myXmlDoc.CreateElement("Cameras");
                //将根节点加入到xml文件中(AppendChild)
                myXmlDoc.AppendChild(rootElement);

                foreach (var item in cameraList)
                {
                    //初始化第一层的第一个子节点
                    XmlElement firstLevelElement1 = myXmlDoc.CreateElement("Camera");
                    //填充第一层的第一个子节点的属性值(SetAttribute)
                    firstLevelElement1.SetAttribute("ID", item.camID);
                    //将第一层的第一个子节点加入到根节点下
                    rootElement.AppendChild(firstLevelElement1);
                    //初始化第二层的第一个子节点
                    XmlElement secondLevelElement11 = myXmlDoc.CreateElement("Exposure");
                    //填充第二层的第一个子节点的值(InnerText)
                    secondLevelElement11.InnerText = item.camExposure.ToString();
                    firstLevelElement1.AppendChild(secondLevelElement11);
                    XmlElement secondLevelElement12 = myXmlDoc.CreateElement("Gain");
                    secondLevelElement12.InnerText = item.camGain.ToString();
                    firstLevelElement1.AppendChild(secondLevelElement12);

                }
                //将xml文件保存到指定的路径下
                myXmlDoc.Save(xmlFilePath);

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

        public static void ReadCameraXMLFile(string xmlFilePath, out List<Camera> cameraList)
        {
            cameraList = new List<Camera>();

            //初始化一个xml实例
            XmlDocument myXmlDoc = new XmlDocument();
            //加载xml文件(参数为xml文件的路径)
            myXmlDoc.Load(xmlFilePath);
            //获得第一个匹配的节点(SelectSingleNode):此xml文件的根节点
            XmlNode rootNode = myXmlDoc.SelectSingleNode("Cameras");
            //分别获得该节点的InnerXml和OuterXml信息
            string innerXmlInfo = rootNode.InnerXml.ToString();
            string outerXmlInfo = rootNode.OuterXml.ToString();
            //获得该节点的子节点(即:该节点的第一层子节点)
            XmlNodeList firstLevelNodeList = rootNode.ChildNodes;

            try
            {
                foreach (XmlNode node in firstLevelNodeList)
                {
                    Camera camera = new Camera();
                    //获得该节点的属性集合
                    XmlAttributeCollection attributeCol = node.Attributes;
                    foreach (XmlAttribute attri in attributeCol)
                    {
                        //获取属性名称与属性值
                        string name = attri.Name;
                        string value = attri.Value;
                        camera.camID = value;//相机ID
                    }

                    //判断此节点是否还有子节点
                    if (node.HasChildNodes)
                    {
                        //获取该节点的第一个子节点
                        XmlNode secondLevelNode1 = node.FirstChild;
                        //获取该节点的名字
                        string name = secondLevelNode1.Name;
                        //获取该节点的值(即:InnerText)
                        string innerText = secondLevelNode1.InnerText;
                        camera.camExposure = Convert.ToInt16(innerText);//相机曝光

                        //获取该节点的第二个子节点(用数组下标获取)
                        XmlNode secondLevelNode2 = node.ChildNodes[1];
                        name = secondLevelNode2.Name;
                        innerText = secondLevelNode2.InnerText;
                        camera.camGain = Convert.ToInt16(innerText);//相机增益
                    }

                    cameraList.Add(camera);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

    }
}

  • 在winform中使用这个类
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;//引入命名空间

namespace xmlTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void buttonGenerateCameraXMLFile_Click(object sender, EventArgs e)
        {
            List<Camera> cameraList = new List<Camera>();
            Camera camera;
            camera = new Camera("L102314123", 4500, 0);
            cameraList.Add(camera);
            camera = new Camera("L102314124", 5500, 0);
            cameraList.Add(camera);
            camera = new Camera("L102314125", 3500, 1);
            cameraList.Add(camera);
            camera = new Camera("L102314126", 6500, 0);
            cameraList.Add(camera);
            camera = new Camera("L102314127", 4880, 0);
            cameraList.Add(camera);
            camera = new Camera("L102314128", 9500, 0);
            cameraList.Add(camera);
            camera = new Camera("L102314129", 4530, 0);
            cameraList.Add(camera);
            camera = new Camera("L102314130", 13200, 0);
            cameraList.Add(camera);

            CameraXML.GenerateCameraXMLFile("D:\\Cameras.xml", cameraList);
        }

        private void buttonReadCameraXMLFile_Click(object sender, EventArgs e)
        {
            List<Camera> cameraList = new List<Camera>();
            CameraXML.ReadCameraXMLFile("D:\\Cameras.xml", out cameraList);

            foreach (var item in cameraList)
            {
                listBox1.Items.Add("ID:" + item.camID);
                listBox1.Items.Add("Exposure:" + item.camExposure);
                listBox1.Items.Add("Gain:" + item.camGain);
            }
        }
    }
}

工业相机的xml文件,C#,c#,xml,microsoft
工业相机的xml文件,C#,c#,xml,microsoft文章来源地址https://www.toymoban.com/news/detail-522450.html

到了这里,关于C# XML文件(相机参数保存和读取)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在.NetFramework中使用Microsoft.Extensions.Configuration 读取Json和XML

    //需要安装 Microsoft.Extensions.Configuration; //Microsoft.Extensions.Configuration.json //Microsoft.Extensions.Configuration.xml //Microsoft.Extensions.Configuration.Binder; //注意: json 的key中不能出现冒号\\\":\\\" //XML的 Atrribute中不能出现 “Name”, 且不能使用根节点(从第一个子节点开始) 实体类: XML: Json:

    2024年02月11日
    浏览(31)
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机的高速图像保存(C#)

    ​ Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度

    2024年01月16日
    浏览(37)
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)

    ​ Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度

    2024年01月21日
    浏览(38)
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C++)

    ​ Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度

    2024年02月03日
    浏览(38)
  • Baumer工业相机堡盟工业相机如何通过BGAPI SDK和微软图像压缩算法进行图像压缩保存(C#)

    ​ Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度

    2023年04月13日
    浏览(31)
  • Java读取XML文件

    XML声明是XML文档的第一句,其格式如下 良好的XML文档必须只有一个根元素,就是紧接这声明后面接着的第一个元素,其他元素都是这个根元素的子元素,根元素完全包括文档中其他所有的元素。 在XML文档中,大小写是有区别的。\\\"A\\\"和\\\"a\\\"是不同的标记。 所有标记必须成对出现

    2024年02月08日
    浏览(45)
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用.NET框架的Encoder方法进行图像压缩保存(C#)

    Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩

    2024年04月22日
    浏览(35)
  • qt xml文件写入读取

    ****************************************************************************** QT       += core gui xml ****************************************************************************** #include \\\"mainwindow.h\\\" #include QDomDocument #include QTextStream #include QFile #include QDebug MainWindow::MainWindow(QWidget *parent)     : QMainWindow(parent) {    

    2024年02月09日
    浏览(25)
  • Java读取XML文本文件

    圆周率没有尽头,风景一直在路上 编写测试的xml文本文件 编码读取(可根据自己需求改写读取节点)

    2024年02月16日
    浏览(28)
  • XML的基础知识及XMl文件的创建/读取/更新demo详解

    1.什么是xml? Xml(Extensible Markup Language),可扩展标记语言,一种用于存储数据或传输数据的标记语言,由万维网(W3C开发)。它允许开发人员创建自己的标记,且简单易读,易扩展,支持标准的字符编码,如UFT-8,UTF-16. 2. Xml文档的基本结构 2.1文档声明 ,包括文档版本(ver

    2024年04月09日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包