This code takes in an XML file and formats it to have tabs and return characters.
Designer Code:Code:using System; using System.Text; using System.Windows.Forms; using System.Xml; using System.IO; using System.Diagnostics; //using System.Runtime.InteropServices; namespace Clean_XML { public partial class Form1 : Form { private System.Text.StringBuilder mclsStr; /* [DllImport("Kernel32.dll")] private static extern bool QueryPerformanceCounter( out long lpPerformanceCount); [DllImport("Kernel32.dll")] private static extern bool QueryPerformanceFrequency( out long lpFrequency); */ public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //long iStart,freq; //QueryPerformanceFrequency(out freq); //QueryPerformanceCounter(out iStart); XmlDocument ms = new XmlDocument(); string sInput, sOutput; string mOut; sInput = txtInput.Text; sOutput = txtOutput.Text; if (File.Exists(sInput) == false) { MessageBox.Show("Please enter or drag a valid file into the input text file"); return; } if (sOutput.Length == 0) { sOutput = sInput + ".out"; txtOutput.Text = sOutput; } mclsStr = new System.Text.StringBuilder(); try { ms.Load(sInput); } catch(Exception exc) { MessageBox.Show("An error occured parsing the file" + (char)10 + exc.ToString()); return; } GetNodesRec((ms.ChildNodes), 0); mOut = mclsStr.ToString(); Encoding enCode = Encoding.ASCII; if (ms.FirstChild.NodeType == XmlNodeType.XmlDeclaration) { XmlDeclaration decl = (XmlDeclaration)ms.FirstChild; if (decl.Encoding == "UTF-7") enCode = Encoding.UTF7; else if (decl.Encoding == "UTF-8") enCode = Encoding.UTF8; else if (decl.Encoding == "UTF-32") enCode = Encoding.UTF32; else //if (decl.Encoding == "UTF") enCode = Encoding.Unicode; } StreamWriter sw = new StreamWriter(sOutput, false, enCode); sw.Write(mclsStr.ToString()); sw.Close(); //long iEnd; //QueryPerformanceCounter(out iEnd); //double iTime = (double)(iEnd - iStart) / (double)freq; //Form1.ActiveForm.Text = "Processing Took: " + Math.Round(iTime,2).ToString() + " Seconds"; DialogResult drAns = MessageBox.Show("Done - " + sOutput + " has been created. Do you want to open this file", "Open File", MessageBoxButtons.YesNo); if (drAns == DialogResult.Yes) { Process p = new Process(); p.StartInfo.FileName = @"notepad"; p.StartInfo.Arguments = sOutput; p.StartInfo.CreateNoWindow = true; p.Start(); } } private void GetNodesRec(System.Xml.XmlNodeList oNodes, int iTab) { for (int iLoop = 0; iLoop < oNodes.Count; iLoop++) { if (oNodes[iLoop].ChildNodes.Count > 0) { mclsStr.AppendLine(GetTabs(iTab) + FirstPart(oNodes[iLoop].OuterXml)); GetNodesRec((oNodes[iLoop].ChildNodes), iTab + 1); mclsStr.AppendLine(GetTabs(iTab) + LastPart((oNodes[iLoop].OuterXml))); } else { mclsStr.AppendLine(GetTabs(iTab) + oNodes[iLoop].OuterXml); } } } private string LastPart(string p) { int iPos; iPos = p.LastIndexOf("<"); return p.Substring(iPos); } private string FirstPart(string p) { int iPos; iPos = p.IndexOf(">")+1; return p.Substring(0, iPos); } private string GetTabs(int iTab) { if (iTab < 0) iTab = 1; return new string((char)9, iTab); } private void OnDragDrop(object sender, DragEventArgs e) { string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); txtInput.Text = files[0]; SetOutPutFileName(); } private void OnDragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true) e.Effect = DragDropEffects.All; } private void SetOutPutFileName() { if (txtOutput.Text.Length == 0) txtOutput.Text = txtInput.Text + ".out"; } } }
Code:namespace Clean_XML { partial class Form1 { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.txtInput = new System.Windows.Forms.TextBox(); this.txtOutput = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(205, 64); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "Go"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // // txtInput // this.txtInput.AllowDrop = true; this.txtInput.Location = new System.Drawing.Point(79, 12); this.txtInput.Name = "txtInput"; this.txtInput.Size = new System.Drawing.Size(201, 20); this.txtInput.TabIndex = 1; this.txtInput.DragDrop += new System.Windows.Forms.DragEventHandler(this.OnDragDrop); this.txtInput.DragEnter += new System.Windows.Forms.DragEventHandler(this.OnDragEnter); // // txtOutput // this.txtOutput.Location = new System.Drawing.Point(79, 38); this.txtOutput.Name = "txtOutput"; this.txtOutput.Size = new System.Drawing.Size(201, 20); this.txtOutput.TabIndex = 2; // // label1 // this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(12, 12); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(50, 13); this.label1.TabIndex = 3; this.label1.Text = "Input File"; // // label2 // this.label2.AutoSize = true; this.label2.Location = new System.Drawing.Point(12, 38); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(58, 13); this.label2.TabIndex = 4; this.label2.Text = "Output File"; // // Form1 // this.AllowDrop = true; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(286, 92); this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.Controls.Add(this.txtOutput); this.Controls.Add(this.txtInput); this.Controls.Add(this.button1); this.Name = "Form1"; this.Text = "XML Cleaner"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Button button1; private System.Windows.Forms.TextBox txtInput; private System.Windows.Forms.TextBox txtOutput; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; } }




Reply With Quote