欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# XML文件操作之相機(jī)參數(shù)保存和讀取

 更新時間:2022年11月06日 10:14:03   作者:MechMaster  
XML是可擴(kuò)展標(biāo)記語言是一種數(shù)據(jù)語言,它將數(shù)據(jù)以一種簡單的文本格式存儲,可以被人類和幾乎任何計(jì)算機(jī)理解。本文將利用C#實(shí)現(xiàn)相機(jī)參數(shù)讀取并保存至XML文件,感興趣的可以學(xué)習(xí)一下

1. XML基礎(chǔ)

XML是可擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML)是一種數(shù)據(jù)語言,它將數(shù)據(jù)以一種簡單的文本格式存儲,可以被人類和幾乎任何計(jì)算機(jī)理解。Microsoft在.Net Framework和其他微軟產(chǎn)品中已經(jīng)完全采用它。

XML的基本格式:

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

2. XML基本操作

C#操作XML方法詳解

3. 相機(jī)參數(shù)保存和讀取

創(chuàng)建一個相機(jī)參數(shù)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>
        /// 創(chuàng)建相機(jī)XML文件
        /// </summary>
        /// <param name="xmlFilePath">存儲路徑</param>
        /// <param name="cameraList">相機(jī)列表</param>
        public static void GenerateCameraXMLFile(string xmlFilePath, List<Camera> cameraList)
        {
            try
            {
                //初始化一個xml實(shí)例
                XmlDocument myXmlDoc = new XmlDocument();
                //創(chuàng)建xml的根節(jié)點(diǎn)
                XmlElement rootElement = myXmlDoc.CreateElement("Cameras");
                //將根節(jié)點(diǎn)加入到xml文件中(AppendChild)
                myXmlDoc.AppendChild(rootElement);

                foreach (var item in cameraList)
                {
                    //初始化第一層的第一個子節(jié)點(diǎn)
                    XmlElement firstLevelElement1 = myXmlDoc.CreateElement("Camera");
                    //填充第一層的第一個子節(jié)點(diǎn)的屬性值(SetAttribute)
                    firstLevelElement1.SetAttribute("ID", item.camID);
                    //將第一層的第一個子節(jié)點(diǎn)加入到根節(jié)點(diǎn)下
                    rootElement.AppendChild(firstLevelElement1);
                    //初始化第二層的第一個子節(jié)點(diǎn)
                    XmlElement secondLevelElement11 = myXmlDoc.CreateElement("Exposure");
                    //填充第二層的第一個子節(jié)點(diǎn)的值(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實(shí)例
            XmlDocument myXmlDoc = new XmlDocument();
            //加載xml文件(參數(shù)為xml文件的路徑)
            myXmlDoc.Load(xmlFilePath);
            //獲得第一個匹配的節(jié)點(diǎn)(SelectSingleNode):此xml文件的根節(jié)點(diǎn)
            XmlNode rootNode = myXmlDoc.SelectSingleNode("Cameras");
            //分別獲得該節(jié)點(diǎn)的InnerXml和OuterXml信息
            string innerXmlInfo = rootNode.InnerXml.ToString();
            string outerXmlInfo = rootNode.OuterXml.ToString();
            //獲得該節(jié)點(diǎn)的子節(jié)點(diǎn)(即:該節(jié)點(diǎn)的第一層子節(jié)點(diǎn))
            XmlNodeList firstLevelNodeList = rootNode.ChildNodes;

            try
            {
                foreach (XmlNode node in firstLevelNodeList)
                {
                    Camera camera = new Camera();
                    //獲得該節(jié)點(diǎn)的屬性集合
                    XmlAttributeCollection attributeCol = node.Attributes;
                    foreach (XmlAttribute attri in attributeCol)
                    {
                        //獲取屬性名稱與屬性值
                        string name = attri.Name;
                        string value = attri.Value;
                        camera.camID = value;//相機(jī)ID
                    }

                    //判斷此節(jié)點(diǎn)是否還有子節(jié)點(diǎn)
                    if (node.HasChildNodes)
                    {
                        //獲取該節(jié)點(diǎn)的第一個子節(jié)點(diǎn)
                        XmlNode secondLevelNode1 = node.FirstChild;
                        //獲取該節(jié)點(diǎn)的名字
                        string name = secondLevelNode1.Name;
                        //獲取該節(jié)點(diǎn)的值(即:InnerText)
                        string innerText = secondLevelNode1.InnerText;
                        camera.camExposure = Convert.ToInt16(innerText);//相機(jī)曝光

                        //獲取該節(jié)點(diǎn)的第二個子節(jié)點(diǎn)(用數(shù)組下標(biāo)獲?。?
                        XmlNode secondLevelNode2 = node.ChildNodes[1];
                        name = secondLevelNode2.Name;
                        innerText = secondLevelNode2.InnerText;
                        camera.camGain = Convert.ToInt16(innerText);//相機(jī)增益
                    }

                    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);
            }
        }
    }
}

到此這篇關(guān)于C# XML文件操作之相機(jī)參數(shù)保存和讀取的文章就介紹到這了,更多相關(guān)C#相機(jī)參數(shù)保存 讀取內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Avalonia封裝實(shí)現(xiàn)指定組件允許拖動的工具類

    Avalonia封裝實(shí)現(xiàn)指定組件允許拖動的工具類

    這篇文章主要為大家詳細(xì)介紹了Avalonia如何封裝實(shí)現(xiàn)指定組件允許拖動的工具類,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起來學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • c#數(shù)據(jù)綁定之?dāng)?shù)據(jù)轉(zhuǎn)化為信息的示例

    c#數(shù)據(jù)綁定之?dāng)?shù)據(jù)轉(zhuǎn)化為信息的示例

    這篇文章主要介紹了c#數(shù)據(jù)綁定中的數(shù)據(jù)轉(zhuǎn)化為信息的示例,需要的朋友可以參考下
    2014-04-04
  • C# 根據(jù)字符串生成二維碼的實(shí)例代碼

    C# 根據(jù)字符串生成二維碼的實(shí)例代碼

    這篇文章主要介紹了C# 根據(jù)字符串生成二維碼的實(shí)例,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • c#調(diào)用c++的DLL的實(shí)現(xiàn)方法

    c#調(diào)用c++的DLL的實(shí)現(xiàn)方法

    本文主要介紹了c#調(diào)用c++的DLL的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C# Winform下載文件并顯示進(jìn)度條的實(shí)現(xiàn)代碼

    C# Winform下載文件并顯示進(jìn)度條的實(shí)現(xiàn)代碼

    本來是要研究怎樣判斷下載完成,結(jié)果找到這個方法,可以在這個方法完成之后提示下載完成,需要的朋友可以參考下
    2014-07-07
  • C#使用private font改變PDF文件的字體詳解

    C#使用private font改變PDF文件的字體詳解

    這篇文章主要給大家介紹了關(guān)于C#使用private font改變PDF文件的字體的相關(guān)資料,文中通過示例代碼以及圖片介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • visio二次開發(fā)--判斷文檔是否已發(fā)生變化(變化就加星號*)

    visio二次開發(fā)--判斷文檔是否已發(fā)生變化(變化就加星號*)

    最近做一個故障樹診斷的項(xiàng)目,用visio二次開發(fā),可以同時打開多個繪制的故障樹圖形文檔。項(xiàng)目中需要實(shí)現(xiàn)判斷文檔是否發(fā)生變化,這是很多編輯軟件的基本功能,變化了就加個星號*
    2013-04-04
  • C# Winform使用log4net進(jìn)行日志記錄

    C# Winform使用log4net進(jìn)行日志記錄

    Log4Net是從Java的log4j移植過來的,功能也與log4j類似,可以把日志信息輸出到文件、數(shù)據(jù)庫等不同的介質(zhì)或目標(biāo),下面我們就來學(xué)習(xí)一下如何使用log4net進(jìn)行日志記錄吧
    2023-11-11
  • C#實(shí)現(xiàn)策略模式

    C#實(shí)現(xiàn)策略模式

    這篇文章介紹了C#實(shí)現(xiàn)策略模式的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • C#中進(jìn)程的掛起與恢復(fù)

    C#中進(jìn)程的掛起與恢復(fù)

    這篇文章主要介紹了C#中進(jìn)程的掛起與恢復(fù)操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03

最新評論