【博图TIA-Api】通过Excel自动快速导入IO文本列表

说明

续上一篇文章的IO变量,这次是根据Excel表格导入程序内的文本列表。
其实方法都差不多,不只是IO变量注释的文本列表,其他文本列表也是同样方法。

思路

  • 调用TIA的Api接口
  • 实现方式为C#的“Windows 窗体应用(.NET Framework),(默认PC已经装了Visual Studio)
  • IO变量存在Excel文件中,导入时需要选择文档
  • 西门子子接口使用文档(中文的) 点击链接进入

准备

该文章已提过的准备事项就不再重复,只提及未重复的。链接: 【博图TIA-Api】通过Excel自动快速导入IO变量

获取当前Device的HMI(返回HmiTarget)

从Device获取HmiTarget,只有获取了HmiTarget的类型,才能获取程序里的一切内容

在这里插入图片描述

导入HMI文本列表

该xml文件一旦导入就是导入文本列表

        #region 导入HMI文本
        //Imports a single TextList
        public static void ImportSingleTextList(HmiTarget hmitarget, string path)
        {
            TextListComposition textListComposition = hmitarget.TextLists;
            //IList<TextList> importedTextLists
            textListComposition.Import(new FileInfo(path), ImportOptions.Override);
        }

        #endregion

导出HMI的文本列表为XML文件

之前PLC程序的xml文件可以通过【版本控制接口】导出,但是HMI的文本列表却只能用调用接口导出。
输入一个HMI目标,反正导出一次后就有文件了,程序没写成通用的。输出路径我直接写了一个固定路径

        public static void ExportTextLists(HmiTarget hmitarget)
        {
            TextListComposition text = hmitarget.TextLists;
            foreach (TextList textList in text)
            {
                FileInfo info = new FileInfo(string.Format(@"D:\Export\{0}.xml", textList.Name));
                textList.Export(info, ExportOptions.WithDefaults);
            }
        }

        #endregion

关键注意:导出的是HMI所有的文本列表

输入输出注释说明

文本列表分为3个。一个是显示总的地址,一个是所有输入的注释,一个是所有输出的注释。

总输入输出XML文件分析

打开总输入输出的xml文件

请添加图片描述

文本添加的规律和IO变量差不多

在这里插入图片描述
请添加图片描述

具体调用代码,这些都是对Xml文件的操作

#region IO导入文本新建节点_ID=1的情况
        public static void IOxmlCreatXelmentID_1(string str, XmlDocument xmlDoc, XmlElement rootElement, string strings)
        {
            XmlElement xe1 = xmlDoc.CreateElement("MultilingualTextItem");
            xe1.SetAttribute("ID", str);//设置该节点ID属性
            xe1.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
            rootElement.AppendChild(xe1);
            XmlElement xe1_2 = xmlDoc.CreateElement("AttributeList");
            xe1.AppendChild(xe1_2);
            XmlElement xe1_2_1 = xmlDoc.CreateElement("Culture");
            xe1_2_1.InnerText = strings;
            xe1_2.AppendChild(xe1_2_1);
            XmlNode createNode = xmlDoc.CreateNode(XmlNodeType.Element, "Text", "");
            xe1_2.AppendChild(createNode);
        }

        #endregion

#region IO导入文本新建节点_ID=1之外的情况_IO总显示
public static void IOxmlCreatXelmentID_1_Other_ALLIO(int Number, XmlDocument xmlDoc, XmlElement rootElement, int IO, string FilePath)
{
    XmlElement xe1 = xmlDoc.CreateElement("Hmi.TextGraphicList.TextListEntry");
    xe1.SetAttribute("ID", DecimalToHex(Number));//设置该节点ID属性
    xe1.SetAttribute("CompositionName", "Entries");//设置该节点CompositionName属性
    rootElement.AppendChild(xe1);

    XmlElement xe1_2 = xmlDoc.CreateElement("AttributeList");
    xe1.AppendChild(xe1_2);
    XmlElement xe1_2_1 = xmlDoc.CreateElement("DefaultEntry");
    xe1_2_1.InnerText = "false";
    xe1_2.AppendChild(xe1_2_1);
    XmlElement xe1_2_2 = xmlDoc.CreateElement("EntryType");
    xe1_2_2.InnerText = "SingleValue";
    xe1_2.AppendChild(xe1_2_2);
    XmlElement xe1_2_3 = xmlDoc.CreateElement("From");
    xe1_2_3.InnerText = IO.ToString();
    xe1_2.AppendChild(xe1_2_3);
    XmlElement xe1_2_4 = xmlDoc.CreateElement("To");
    xe1_2_4.InnerText = IO.ToString();
    xe1_2.AppendChild(xe1_2_4);

    XmlElement xe1_3 = xmlDoc.CreateElement("ObjectList");
    xe1.AppendChild(xe1_3);
    XmlElement xe1_3_1 = xmlDoc.CreateElement("MultilingualText");
    xe1_3_1.SetAttribute("ID", DecimalToHex(Number + 1));//设置该节点ID属性
    xe1_3_1.SetAttribute("CompositionName", "Text");//设置该节点CompositionName属性
    xe1_3.AppendChild(xe1_3_1);
    XmlElement xe1_3_1_1 = xmlDoc.CreateElement("ObjectList");
    xe1_3_1.AppendChild(xe1_3_1_1);

    XmlElement xe1_3_1_1_1 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_1.SetAttribute("ID", DecimalToHex(Number + 2));//设置该节点ID属性
    xe1_3_1_1_1.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_1);
    XmlElement xe1_3_1_1_1_1 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_1.AppendChild(xe1_3_1_1_1_1);
    XmlElement xe1_3_1_1_1_1_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_1_1_1.InnerText = "zh-CN";
    xe1_3_1_1_1_1.AppendChild(xe1_3_1_1_1_1_1);
    XmlElement xe1_3_1_1_1_1_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_1_1_2.InnerXml = "<body><p>" + "IW" + IO.ToString() + "/QW" + IO.ToString() + "</p></body>";
    xe1_3_1_1_1_1.AppendChild(xe1_3_1_1_1_1_2);


    XmlElement xe1_3_1_1_2 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_2.SetAttribute("ID", DecimalToHex(Number + 3));//设置该节点ID属性
    xe1_3_1_1_2.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_2);
    XmlElement xe1_3_1_1_2_1 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_2.AppendChild(xe1_3_1_1_2_1);
    XmlElement xe1_3_1_1_2_1_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_2_1_1.InnerText = "en-GB";
    xe1_3_1_1_2_1.AppendChild(xe1_3_1_1_2_1_1);
    XmlElement xe1_3_1_1_2_1_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_2_1_2.InnerXml = "<body><p>" + "IW" + IO.ToString() + "/QW" + IO.ToString() + "</p></body>";
    xe1_3_1_1_2_1.AppendChild(xe1_3_1_1_2_1_2);

    XmlElement xe1_3_1_1_3 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_3.SetAttribute("ID", DecimalToHex(Number + 4));//设置该节点ID属性
    xe1_3_1_1_3.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_3);
    XmlElement xe1_3_1_1_3_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_3.AppendChild(xe1_3_1_1_3_2);
    XmlElement xe1_3_1_1_3_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_3_2_1.InnerText = "de-DE";
    xe1_3_1_1_3_2.AppendChild(xe1_3_1_1_3_2_1);
    XmlElement xe1_3_1_1_3_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_3_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_3_2.AppendChild(xe1_3_1_1_3_2_2);

    XmlElement xe1_3_1_1_4 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_4.SetAttribute("ID", DecimalToHex(Number + 5));//设置该节点ID属性
    xe1_3_1_1_4.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_4);
    XmlElement xe1_3_1_1_4_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_4.AppendChild(xe1_3_1_1_4_2);
    XmlElement xe1_3_1_1_4_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_4_2_1.InnerText = "cs-CZ";
    xe1_3_1_1_4_2.AppendChild(xe1_3_1_1_4_2_1);
    XmlElement xe1_3_1_1_4_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_4_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_4_2.AppendChild(xe1_3_1_1_4_2_2);

    XmlElement xe1_3_1_1_5 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_5.SetAttribute("ID", DecimalToHex(Number + 6));//设置该节点ID属性
    xe1_3_1_1_5.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_5);
    XmlElement xe1_3_1_1_5_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_5.AppendChild(xe1_3_1_1_5_2);
    XmlElement xe1_3_1_1_5_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_5_2_1.InnerText = "es-ES";
    xe1_3_1_1_5_2.AppendChild(xe1_3_1_1_5_2_1);
    XmlElement xe1_3_1_1_5_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_5_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_5_2.AppendChild(xe1_3_1_1_5_2_2);

    XmlElement xe1_3_1_1_6 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_6.SetAttribute("ID", DecimalToHex(Number + 7));//设置该节点ID属性
    xe1_3_1_1_6.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_6);
    XmlElement xe1_3_1_1_6_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_6.AppendChild(xe1_3_1_1_6_2);
    XmlElement xe1_3_1_1_6_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_6_2_1.InnerText = "fr-FR";
    xe1_3_1_1_6_2.AppendChild(xe1_3_1_1_6_2_1);
    XmlElement xe1_3_1_1_6_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_6_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_6_2.AppendChild(xe1_3_1_1_6_2_2);

    XmlElement xe1_3_1_1_7 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_7.SetAttribute("ID", DecimalToHex(Number + 8));//设置该节点ID属性
    xe1_3_1_1_7.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_7);
    XmlElement xe1_3_1_1_7_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_7.AppendChild(xe1_3_1_1_7_2);
    XmlElement xe1_3_1_1_7_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_7_2_1.InnerText = "hu-HU";
    xe1_3_1_1_7_2.AppendChild(xe1_3_1_1_7_2_1);
    XmlElement xe1_3_1_1_7_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_7_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_7_2.AppendChild(xe1_3_1_1_7_2_2);

    XmlElement xe1_3_1_1_8 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_8.SetAttribute("ID", DecimalToHex(Number + 9));//设置该节点ID属性
    xe1_3_1_1_8.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_8);
    XmlElement xe1_3_1_1_8_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_8.AppendChild(xe1_3_1_1_8_2);
    XmlElement xe1_3_1_1_8_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_8_2_1.InnerText = "it-IT";
    xe1_3_1_1_8_2.AppendChild(xe1_3_1_1_8_2_1);
    XmlElement xe1_3_1_1_8_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_8_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_8_2.AppendChild(xe1_3_1_1_8_2_2);

    XmlElement xe1_3_1_1_9 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_9.SetAttribute("ID", DecimalToHex(Number + 10));//设置该节点ID属性
    xe1_3_1_1_9.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_9);
    XmlElement xe1_3_1_1_9_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_9.AppendChild(xe1_3_1_1_9_2);
    XmlElement xe1_3_1_1_9_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_9_2_1.InnerText = "pl-PL";
    xe1_3_1_1_9_2.AppendChild(xe1_3_1_1_9_2_1);
    XmlElement xe1_3_1_1_9_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_9_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_9_2.AppendChild(xe1_3_1_1_9_2_2);

    XmlElement xe1_3_1_1_10 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_10.SetAttribute("ID", DecimalToHex(Number + 11));//设置该节点ID属性
    xe1_3_1_1_10.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_10);
    XmlElement xe1_3_1_1_10_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_10.AppendChild(xe1_3_1_1_10_2);
    XmlElement xe1_3_1_1_10_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_10_2_1.InnerText = "ru-RU";
    xe1_3_1_1_10_2.AppendChild(xe1_3_1_1_10_2_1);
    XmlElement xe1_3_1_1_10_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_10_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_10_2.AppendChild(xe1_3_1_1_10_2_2);

    XmlElement xe1_3_1_1_11 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_11.SetAttribute("ID", DecimalToHex(Number + 12));//设置该节点ID属性
    xe1_3_1_1_11.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_11);
    XmlElement xe1_3_1_1_11_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_11.AppendChild(xe1_3_1_1_11_2);
    XmlElement xe1_3_1_1_11_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_11_2_1.InnerText = "sv-SE";
    xe1_3_1_1_11_2.AppendChild(xe1_3_1_1_11_2_1);
    XmlElement xe1_3_1_1_11_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_11_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_11_2.AppendChild(xe1_3_1_1_11_2_2);

    XmlElement xe1_3_1_1_12 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_12.SetAttribute("ID", DecimalToHex(Number + 13));//设置该节点ID属性
    xe1_3_1_1_12.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_12);
    XmlElement xe1_3_1_1_12_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_12.AppendChild(xe1_3_1_1_12_2);
    XmlElement xe1_3_1_1_12_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_12_2_1.InnerText = "pt-BR";
    xe1_3_1_1_12_2.AppendChild(xe1_3_1_1_12_2_1);
    XmlElement xe1_3_1_1_12_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_12_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_12_2.AppendChild(xe1_3_1_1_12_2_2);

    XmlElement xe1_3_1_1_13 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_13.SetAttribute("ID", DecimalToHex(Number + 14));//设置该节点ID属性
    xe1_3_1_1_13.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_13);
    XmlElement xe1_3_1_1_13_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_13.AppendChild(xe1_3_1_1_13_2);
    XmlElement xe1_3_1_1_13_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_13_2_1.InnerText = "ro-RO";
    xe1_3_1_1_13_2.AppendChild(xe1_3_1_1_13_2_1);
    XmlElement xe1_3_1_1_13_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_13_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_13_2.AppendChild(xe1_3_1_1_13_2_2);

    XmlElement xe1_3_1_1_14 = xmlDoc.CreateElement("MultilingualTextItem");
    xe1_3_1_1_14.SetAttribute("ID", DecimalToHex(Number + 15));//设置该节点ID属性
    xe1_3_1_1_14.SetAttribute("CompositionName", "Items");//设置该节点CompositionName属性
    xe1_3_1_1.AppendChild(xe1_3_1_1_14);
    XmlElement xe1_3_1_1_14_2 = xmlDoc.CreateElement("AttributeList");
    xe1_3_1_1_14.AppendChild(xe1_3_1_1_14_2);
    XmlElement xe1_3_1_1_14_2_1 = xmlDoc.CreateElement("Culture");
    xe1_3_1_1_14_2_1.InnerText = "en-US";
    xe1_3_1_1_14_2.AppendChild(xe1_3_1_1_14_2_1);
    XmlElement xe1_3_1_1_14_2_2 = xmlDoc.CreateElement("Text");
    xe1_3_1_1_14_2_2.InnerXml = "<body><p></p></body>";
    xe1_3_1_1_14_2.AppendChild(xe1_3_1_1_14_2_2);
}

#endregion

输入输出XML文件分析

输入输出文本列表其实和上述的是一样的。
请添加图片描述
请添加图片描述

代码是和上面一样的,不同公司显示可能不同,我们就倾向于地址+图纸位置。只要修改其中显示代码就可以。

在这里插入图片描述

拆分IO

之前不是读取了Excel表里的IO变量,为了方便放入文本列表中,必须的拆分一下。

        #region IO拆分字符串
        public static string[,] GetIOStrings(string[,] result)
        {
            string[,] IOStrings = new string[1000, 5];
            int i, j, k;
            for (i = 1; result[i, 1] != null; i++)
            {
                //将%I1.2分成%I1和2
                string[] Arr = result[i, 2].Split('.');

                //获取%I1.2的I
                IOStrings[i, 1] = Arr[0].Substring(1, 1);

                //获取%I1.2的1
                IOStrings[i, 2] = Arr[0].Substring(2);

                //获取%I1.2的2
                IOStrings[i, 3] = Arr[1];

                //IO名称传递
                IOStrings[i, 4] = result[i, 1];

            }


            return IOStrings;
        }
        #endregion

写入主流程函数

这里默认已经读取完Excel的数据

        #region 写入HMI_IO文本列表的xml文件
        public static void WriteHMIIOxml(string[,] Userresult1, string[,] Userresult2, string[,] Userresult3, string XmlFileName1, string XmlFileName2, string XmlFileName3)
        {
            #region 分离出输入和输出
            int i, j, k;
            int Input = 1;
            int Output = 1;
            string[,] InputString = new string[1000, 4];
            string[,] OutputString = new string[1000, 4];

            string[,] result1 = BaseData.GetIOStrings(Userresult1);
            string[,] result2 = BaseData.GetIOStrings(Userresult2);
            string[,] result3 = BaseData.GetIOStrings(Userresult3);

            for (i = 1; result1[i, 1] != null; i++)
            {
                if (result1[i, 1] == "I")
                {
                    //第一个是小数点前数,第二个是小数点后数,第三个是名字
                    InputString[Input, 1] = result1[i, 2];
                    InputString[Input, 2] = result1[i, 3];
                    InputString[Input, 3] = result1[i, 4];
                    Input++;
                }
                if (result1[i, 1] == "Q")
                {
                    OutputString[Output, 1] = result1[i, 2];
                    OutputString[Output, 2] = result1[i, 3];
                    OutputString[Output, 3] = result1[i, 4];
                    Output++;
                }
            }
            for (i = 1; result2[i, 1] != null; i++)
            {
                if (result2[i, 1] == "I")
                {
                    //第一个是小数点前数,第二个是小数点后数,第三个是名字
                    InputString[Input, 1] = result2[i, 2];
                    InputString[Input, 2] = result2[i, 3];
                    InputString[Input, 3] = result2[i, 4];
                    Input++;
                }
                if (result2[i, 1] == "Q")
                {
                    OutputString[Output, 1] = result2[i, 2];
                    OutputString[Output, 2] = result2[i, 3];
                    OutputString[Output, 3] = result2[i, 4];
                    Output++;
                }
            }
            for (i = 1; result3[i, 1] != null; i++)
            {
                if (result3[i, 1] == "I")
                {
                    //第一个是小数点前数,第二个是小数点后数,第三个是名字
                    InputString[Input, 1] = result3[i, 2];
                    InputString[Input, 2] = result3[i, 3];
                    InputString[Input, 3] = result3[i, 4];
                    Input++;
                }
                if (result3[i, 1] == "Q")
                {
                    OutputString[Output, 1] = result3[i, 2];
                    OutputString[Output, 2] = result3[i, 3];
                    OutputString[Output, 3] = result3[i, 4];
                    Output++;
                }
            }
            #endregion

            XmlDocument xmlDoc = new XmlDocument();

            #region 写入总的IO显示Xml-----------1

            //获取出现过的IO的地址
            int[] AllIOstrings = new int[1000];
            k = 1;
            for (i = 0; i < 1000; i++)
            {
                for (j = 1; j < 1000; j++)
                {
                    if (InputString[j, 2] == i.ToString() || OutputString[j, 2] == i.ToString())
                    {
                        AllIOstrings[k] = i;
                        k++;
                        break;
                    }

                }
            }
            //得出IO地址中的最大数
            int max = 0;
            for (i = 1; i < k; i++)
            {
                if (AllIOstrings[i] > max)
                {
                    max = AllIOstrings[i];
                }
            }


            //加载xml文件,文件
            xmlDoc.Load(XmlFileName1);

            // 找到需要添加元素的节点
            //XmlNode node = xmlDoc.SelectSingleNode("//MultilingualTextItem[@ID='12']");

            //查找要修改的节点
            XmlNode xns = xmlDoc.SelectSingleNode("Document/Hmi.TextGraphicList.TextList/ObjectList");

            //移出当前所有改节点下子节点
            xns.RemoveAll();

            //获取要添加位置的根节点
            XmlElement rootElement = (XmlElement)xns;

            //主节点的节点创建
            #region <MultilingualText ID="1" CompositionName="Comment">
            string str;

            i = 1;
            str = DecimalToHex(i);
            XmlElement xe1 = xmlDoc.CreateElement("MultilingualText");//创建一个节点
            xe1.SetAttribute("ID", str);//设置该节点ID属性
            xe1.SetAttribute("CompositionName", "Comment");//设置该节点CompositionName属性


            XmlElement xe1_2 = xmlDoc.CreateElement("ObjectList");
            xe1.AppendChild(xe1_2);

            str = DecimalToHex(i + 1);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "zh-CN");
            str = DecimalToHex(i + 2);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "en-GB");
            str = DecimalToHex(i + 3);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "de-DE");
            str = DecimalToHex(i + 4);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "cs-CZ");
            str = DecimalToHex(i + 5);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "es-ES");
            str = DecimalToHex(i + 6);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "fr-FR");
            str = DecimalToHex(i + 7);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "hu-HU");
            str = DecimalToHex(i + 8);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "it-IT");
            str = DecimalToHex(i + 9);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "pl-PL");
            str = DecimalToHex(i + 10);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "ru-RU");
            str = DecimalToHex(i + 11);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "sv-SE");
            str = DecimalToHex(i + 12);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "pt-BR");
            str = DecimalToHex(i + 13);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "ro-RO");
            str = DecimalToHex(i + 14);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "en-US");

            rootElement.AppendChild(xe1);
            #endregion

            //显示节点的节点创建
            i = 16;
            for (j = 0; j <= max; j = j + 2)
            {
                foreach (int ints in AllIOstrings)
                {
                    if (ints == j)
                    {
                        BaseData.IOxmlCreatXelmentID_1_Other_ALLIO(i, xmlDoc, rootElement, j, XmlFileName1);
                        i = i + 16;
                        break;
                    }
                }
            }
            // 保存修改后的XML文件
            xmlDoc.Save(XmlFileName1);
            #endregion

            #region 写入输入的IO显示xml---------2
            //加载xml文件,文件
            xmlDoc.Load(XmlFileName2);

            // 找到需要添加元素的节点
            //XmlNode node = xmlDoc.SelectSingleNode("//MultilingualTextItem[@ID='12']");

            //查找要修改的节点
            xns = xmlDoc.SelectSingleNode("Document/Hmi.TextGraphicList.TextList/ObjectList");

            //移出当前所有改节点下子节点
            xns.RemoveAll();

            //获取要添加位置的根节点
            rootElement = (XmlElement)xns;

            //主节点的节点创建
            #region <MultilingualText ID="1" CompositionName="Comment">

            i = 1;
            str = DecimalToHex(i);
            xe1 = xmlDoc.CreateElement("MultilingualText");//创建一个节点
            xe1.SetAttribute("ID", str);//设置该节点ID属性
            xe1.SetAttribute("CompositionName", "Comment");//设置该节点CompositionName属性


            xe1_2 = xmlDoc.CreateElement("ObjectList");
            xe1.AppendChild(xe1_2);

            str = DecimalToHex(i + 1);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "zh-CN");
            str = DecimalToHex(i + 2);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "en-GB");
            str = DecimalToHex(i + 3);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "de-DE");
            str = DecimalToHex(i + 4);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "cs-CZ");
            str = DecimalToHex(i + 5);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "es-ES");
            str = DecimalToHex(i + 6);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "fr-FR");
            str = DecimalToHex(i + 7);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "hu-HU");
            str = DecimalToHex(i + 8);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "it-IT");
            str = DecimalToHex(i + 9);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "pl-PL");
            str = DecimalToHex(i + 10);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "ru-RU");
            str = DecimalToHex(i + 11);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "sv-SE");
            str = DecimalToHex(i + 12);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "pt-BR");
            str = DecimalToHex(i + 13);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "ro-RO");
            str = DecimalToHex(i + 14);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "en-US");

            rootElement.AppendChild(xe1);
            #endregion

            //显示节点的节点创建
            i = 16;
            for (j = 1; j < Input; j++)
            {
                {
                    BaseData.IOxmlCreatXelmentID_1_Other_IO(i, xmlDoc, rootElement, InputString, j, XmlFileName2, "I");
                    i = i + 16;
                }
            }
            // 保存修改后的XML文件
            xmlDoc.Save(XmlFileName2);
            #endregion

            #region 写入输出的IO显示xml---------3
            //加载xml文件,文件
            xmlDoc.Load(XmlFileName3);

            // 找到需要添加元素的节点
            //XmlNode node = xmlDoc.SelectSingleNode("//MultilingualTextItem[@ID='12']");

            //查找要修改的节点
            xns = xmlDoc.SelectSingleNode("Document/Hmi.TextGraphicList.TextList/ObjectList");

            //移出当前所有改节点下子节点
            xns.RemoveAll();

            //获取要添加位置的根节点
            rootElement = (XmlElement)xns;

            //主节点的节点创建
            #region <MultilingualText ID="1" CompositionName="Comment">

            i = 1;
            str = DecimalToHex(i);
            xe1 = xmlDoc.CreateElement("MultilingualText");//创建一个节点
            xe1.SetAttribute("ID", str);//设置该节点ID属性
            xe1.SetAttribute("CompositionName", "Comment");//设置该节点CompositionName属性


            xe1_2 = xmlDoc.CreateElement("ObjectList");
            xe1.AppendChild(xe1_2);

            str = DecimalToHex(i + 1);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "zh-CN");
            str = DecimalToHex(i + 2);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "en-GB");
            str = DecimalToHex(i + 3);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "de-DE");
            str = DecimalToHex(i + 4);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "cs-CZ");
            str = DecimalToHex(i + 5);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "es-ES");
            str = DecimalToHex(i + 6);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "fr-FR");
            str = DecimalToHex(i + 7);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "hu-HU");
            str = DecimalToHex(i + 8);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "it-IT");
            str = DecimalToHex(i + 9);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "pl-PL");
            str = DecimalToHex(i + 10);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "ru-RU");
            str = DecimalToHex(i + 11);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "sv-SE");
            str = DecimalToHex(i + 12);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "pt-BR");
            str = DecimalToHex(i + 13);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "ro-RO");
            str = DecimalToHex(i + 14);
            BaseData.IOxmlCreatXelmentID_1(str, xmlDoc, xe1_2, "en-US");

            rootElement.AppendChild(xe1);
            #endregion

            //显示节点的节点创建
            i = 16;
            for (j = 1; j < Output; j++)
            {
                {
                    BaseData.IOxmlCreatXelmentID_1_Other_IO(i, xmlDoc, rootElement, OutputString, j, XmlFileName3, "Q");
                    i = i + 16;
                }
            }
            // 保存修改后的XML文件
            xmlDoc.Save(XmlFileName3);
            #endregion
        }

        #endregion

主流程

Created with Raphaël 2.3.0 开始 选择文档 读取Excel文件 修改XML文件 连接博图项目 选择HMI 导入XML文件 结束

页面代码

在这里插入图片描述

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值