<Tag name="APA_PIRCA811AAL" path="" type="OPC"> <Property name="Datatype">6</Property> <Property name="Value">1</Property> <Property name="OPCServer">Ignition OPC-UA Server</Property> <Property name="OPCItemPath">[DEPOUSSIERAGE]DB40,X35.3</Property> <Property name="Scalemode">0</Property> <Property name="RawLow">0.000000</Property> <Property name="RawHigh">1.000000</Property> <Property name="ScaledLow">0.000000</Property> <Property name="ScaledHigh">1.000000</Property> <Property name="FormatString"></Property> <Property name="ToolTip">DEFAUT PRESSION SORTIE FOUR</Property> <Property name="EngUnit"></Property> <Property name="HistoryEnabled">0</Property> <Property name="PrimaryHistoryProvider">CIFC</Property> <Alarms> <Alarm name="DEFAUT PRESSION SORTIE FOUR"> <Property name="priority">1</Property> <Property name="setpointA">1.000000</Property> <Property name="displayPath">HISTO_CIFC</Property> </Alarm>
<Alarm name="DEFAUT PRESSION SORTIE FOUR"> <Property name="priority">1</Property> <Property name="setpointA">1.000000</Property> <Property name="displayPath">HISTO_CIFC</Property> </Alarm> </Alarms> </Tag>
Hi Bruce, thx a lot for your answer,but i wasn't enough precise with my request.
<?xml version="1.0" encoding="utf-8" ?> <Tags> <Tag name="SO2EXTLATOUR12" path="" type="OPC">
<Property name="Datatype">6</Property> <Property name="Value">1</Property> <Property name="OPCServer">Ignition OPC-UA Server</Property>
<Property name="OPCItemPath">[DEPOUSSIERAGE]DB50,X35.2</Property> </Tag> <Tag>
<Property name="Datatype">6</Property> <Property name="Value">1</Property> <Property name="OPCServer">Ignition OPC-UA Server</Property>
<Alarms> <Alarm name="Defaut pression air instrument PAS803">
<Property name="priority">1</Property> <Property name="setpointA">1.000000</Property> <Property name="displayPath">HISTO_CIFC</Property> </Alarm> </Alarms> </Tag>
</Tags>
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Linq;
using LINQtoCSV;
using DataStreams.Xml;
using DataStreams.Csv;
namespace ConvertisseurCsvToXml
{
public class XmlToCsv
{
[STAThread]
public static void ConvertirToXml()
{
using (CsvWriter writer = new CsvWriter(@"C:\CSV-TO-XML\test.csv"))
using (XmlRecordReader reader = new XmlRecordReader(@"C:\CSV-TO-XML\test.xml", "Tags/Tag"))
{
reader.Columns.Add("Tags/Tag/@name", "TagName");
reader.Columns.Add("Tags/Tag/@type", "TagType");
reader.Columns.Add("property", "DataType");
reader.Columns.Add("property", "Value");
reader.Columns.Add("property", "OPCServer");
reader.Columns.Add("property", "OPCItemPath");
reader.Columns.Add("Tags/Tag/Alarms/Alarm/@name", "AlarmName");
reader.Columns.Add("property", "priority");
reader.Columns.Add("property", "setpointA");
reader.Columns.Add("property", "displayPath");
writer.Write("TAG NAME");
writer.Write("TAG TYPE");
writer.Write("DATATYPE");
writer.Write("VALUE");
writer.Write("OPCSERVER");
writer.Write("OPCITEMPATH");
writer.Write("ALARM NAME");
writer.Write("PRIORITY");
writer.Write("SETPOINTA");
writer.Write("DISPLAYPATH");
writer.EndRecord();
while (reader.ReadRecord())
{
writer.Write(reader["TagName"]);
writer.Write(reader["TagType"]);
writer.Write(reader["DataType"]);
writer.Write(reader["Value"]);
writer.Write(reader["OPCServer"]);
writer.Write(reader["OPCItemPath"]);
writer.Write(reader["AlarmName"]);
writer.Write(reader["priority"]);
writer.Write(reader["setpointA"]);
writer.Write(reader["displayPath"]);
writer.EndRecord();
}
reader.Close();
writer.Close();
}
}
}
}
Best Regards
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Linq;
using LINQtoCSV;
using DataStreams.Xml;
using DataStreams.Csv;
namespace ConvertisseurCsvToXml
{
public class XmlToCsv
{
[STAThread]
public static void ConvertirToXml()
{
using (XmlRecordReader reader = new XmlRecordReader(@"C:\CSV-TO-XML\test.xml", "Tags/Tag"))
using (CsvWriter writer = new CsvWriter(@"C:\CSV-TO-XML\test.csv", ';', Encoding.Default))
{
reader.Columns.Add("@name", "TagName");
reader.Columns.Add("@type", "TagType");
reader.Columns.Add("Property[@name='Datatype']", "DataType");
reader.Columns.Add("Property[@name='Value']", "Value");
reader.Columns.Add("Property[@name='OPCServer']", "OPCServer");
reader.Columns.Add("Property[@name='OPCItemPath']", "OPCItemPath");
reader.Columns.Add("Property[@name='ScanClass']", "ScanClass");
reader.Columns.Add("Property[@name='ScaleMode']", "ScaleMode");
reader.Columns.Add("Property[@name='RawLow']", "RawLow");
reader.Columns.Add("Property[@name='RawHigh']", "RawHigh");
reader.Columns.Add("Property[@name='ScaledLow']", "ScaledLow");
reader.Columns.Add("Property[@name='ScaledHigh']", "ScaledHigh");
reader.Columns.Add("Property[@name='Deadband']", "Deadband");
reader.Columns.Add("Property[@name='EngUnit']", "EngUnit");
reader.Columns.Add("Property[@name='EngLow']", "EngLow");
reader.Columns.Add("Property[@name='EngHigh']", "EngHigh");
reader.Columns.Add("Property[@name='Tooltip']", "Tooltip");
reader.Columns.Add("Property[@name='HistoryEnabled']", "HistoryEnabled");
reader.Columns.Add("Property[@name='PrimaryHistoryProvider']", "PrimaryHistoryProvider");
reader.Columns.Add("Property[@name='HistoricalScanclass']", "HistoricalScanclass");
reader.Columns.Add("Property[@name='HistoricalDeadband']", "HistoricalDeadband");
reader.Columns.Add("Property[@name='HistoryMaxAgeMode']", "HistoryMaxAgeMode");
reader.Columns.Add("Property[@name='HistoryMaxAge']", "HistoryMaxAge");
reader.Columns.Add("Alarms/Alarm[1]/@name", "AlarmName1");
reader.Columns.Add("Alarms/Alarm[1]/Property[@name='mode']", "mode1");
reader.Columns.Add("Alarms/Alarm[1]/Property[@name='setpointA']", "setpointA1");
reader.Columns.Add("Alarms/Alarm[1]/Property[@name='ALM_Property']", "ALM_Property1");
reader.Columns.Add("Alarms/Alarm[1]/Property[@name='displayPath']", "displayPath1");
reader.Columns.Add("Alarms/Alarm[1]/Property[@name='notes']", "notes1");
reader.Columns.Add("Alarms/Alarm[1]/Property[@name='priority']", "priority1");
reader.Columns.Add("Alarms/Alarm[2]/@name", "AlarmName2");
reader.Columns.Add("Alarms/Alarm[2]/Property[@name='mode']", "mode2");
reader.Columns.Add("Alarms/Alarm[2]/Property[@name='setpointA']", "setpointA2");
reader.Columns.Add("Alarms/Alarm[2]/Property[@name='ALM_Property']", "ALM_Property2");
reader.Columns.Add("Alarms/Alarm[2]/Property[@name='displayPath']", "displayPath2");
reader.Columns.Add("Alarms/Alarm[2]/Property[@name='notes']", "notes2");
reader.Columns.Add("Alarms/Alarm[2]/Property[@name='priority']", "priority2");
reader.Columns.Add("Alarms/Alarm[3]/@name", "AlarmName3");
reader.Columns.Add("Alarms/Alarm[3]/Property[@name='mode']", "mode3");
reader.Columns.Add("Alarms/Alarm[3]/Property[@name='setpointA']", "setpointA3");
reader.Columns.Add("Alarms/Alarm[3]/Property[@name='ALM_Property']", "ALM_Property3");
reader.Columns.Add("Alarms/Alarm[3]/Property[@name='displayPath']", "displayPath3");
reader.Columns.Add("Alarms/Alarm[3]/Property[@name='notes']", "notes3");
reader.Columns.Add("Alarms/Alarm[3]/Property[@name='priority']", "priority3");
reader.Columns.Add("Alarms/Alarm[4]/@name", "AlarmName4");
reader.Columns.Add("Alarms/Alarm[4]/Property[@name='mode']", "mode4");
reader.Columns.Add("Alarms/Alarm[4]/Property[@name='setpointA']", "setpointA4");
reader.Columns.Add("Alarms/Alarm[4]/Property[@name='ALM_Property']", "ALM_Property4");
reader.Columns.Add("Alarms/Alarm[4]/Property[@name='displayPath']", "displayPath4");
reader.Columns.Add("Alarms/Alarm[4]/Property[@name='notes']", "notes4");
reader.Columns.Add("Alarms/Alarm[4]/Property[@name='priority']", "priority4");
writer.Write("TAG NAME");
writer.Write("TAG TYPE");
writer.Write("DATATYPE");
writer.Write("VALUE");
writer.Write("OPCSERVER");
writer.Write("OPCITEMPATH");
writer.Write("ScanClass");
writer.Write("ScaleMode");
writer.Write("RawLow");
writer.Write("RawHigh");
writer.Write("ScaledLow");
writer.Write("ScaledHigh");
writer.Write("Deadband");
writer.Write("EngUnit");
writer.Write("EngLow");
writer.Write("EngHigh");
writer.Write("Tooltip");
writer.Write("HistoryEnabled");
writer.Write("PrimaryHistoryProvider");
writer.Write("HistoricalScanclass");
writer.Write("HistoricalDeadband");
writer.Write("HistoryMaxAgeMode");
writer.Write("HistoryMaxAge");
writer.Write("Alarm1");
writer.Write("Mode");
writer.Write("setpointA");
writer.Write("ALM_Property");
writer.Write("DisplayPath");
writer.Write("Notes");
writer.Write("Priority");
writer.Write("Alarm2");
writer.Write("Mode");
writer.Write("setpointA");
writer.Write("ALM_Property");
writer.Write("DisplayPath");
writer.Write("Notes");
writer.Write("Priority");
writer.Write("Alarm3");
writer.Write("Mode");
writer.Write("setpointA");
writer.Write("ALM_Property");
writer.Write("DisplayPath");
writer.Write("Notes");
writer.Write("Priority");
writer.Write("Alarm4");
writer.Write("Mode");
writer.Write("setpointA");
writer.Write("ALM_Property");
writer.Write("DisplayPath");
writer.Write("Notes");
writer.Write("Priority");
writer.EndRecord();
while (reader.ReadRecord())
{
writer.Write(reader["TagName"]);
writer.Write(reader["TagType"]);
writer.Write(reader["DataType"]);
writer.Write(reader["Value"]);
writer.Write(reader["OPCServer"]);
writer.Write(reader["OPCItemPath"]);
writer.Write(reader["ScanClass"]);
writer.Write(reader["ScaleMode"]);
writer.Write(reader["RawLow"]);
writer.Write(reader["RawHigh"]);
writer.Write(reader["ScaledLow"]);
writer.Write(reader["ScaledHigh"]);
writer.Write(reader["Deadband"]);
writer.Write(reader["EngUnit"]);
writer.Write(reader["EngLow"]);
writer.Write(reader["EngHigh"]);
writer.Write(reader["Tooltip"]);
writer.Write(reader["HistoryEnabled"]);
writer.Write(reader["PrimaryHistoryProvider"]);
writer.Write(reader["HistoricalScanclass"]);
writer.Write(reader["HistoricalDeadband"]);
writer.Write(reader["HistoryMaxAgeMode"]);
writer.Write(reader["HistoryMaxAge"]);
writer.Write(reader["AlarmName1"]);
writer.Write(reader["mode1"]);
writer.Write(reader["setpointA1"]);
writer.Write(reader["ALM_Property1"]);
writer.Write(reader["displayPath1"]);
writer.Write(reader["notes1"]);
writer.Write(reader["priority1"]);
writer.Write(reader["AlarmName2"]);
writer.Write(reader["mode2"]);
writer.Write(reader["setpointA2"]);
writer.Write(reader["ALM_Property2"]);
writer.Write(reader["displayPath2"]);
writer.Write(reader["notes2"]);
writer.Write(reader["priority2"]);
writer.Write(reader["AlarmName3"]);
writer.Write(reader["mode3"]);
writer.Write(reader["setpointA3"]);
writer.Write(reader["ALM_Property3"]);
writer.Write(reader["displayPath3"]);
writer.Write(reader["notes3"]);
writer.Write(reader["priority3"]);
writer.Write(reader["AlarmName4"]);
writer.Write(reader["mode4"]);
writer.Write(reader["setpointA4"]);
writer.Write(reader["ALM_Property4"]);
writer.Write(reader["displayPath4"]);
writer.Write(reader["notes4"]);
writer.Write(reader["priority4"]);
writer.EndRecord();
}
reader.Close();
writer.Close();
}
}
}
}