Представление данных с помощью XML и использование XPath

Автор: Пользователь скрыл имя, 19 Декабря 2011 в 13:48, лабораторная работа

Описание работы

Цель: Научиться представлять информацию в виде XML-документов, формировать их в приложениях C# и выполнять выборку интересующих данных с помощью языка XPath

Работа содержит 1 файл

моя лаба по СОУ.doc

— 215.00 Кб (Скачать)

МИНИСТЕРСТВО  ОБРАЗОВАНИЯ И НАУКИ, МОЛОДЕЖИ И  СПОРТА УКРАИНЫ

ДОНЕЦКИЙ  НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ 
 
 
 

Лабораторная  работа №1

по сервисно-ориентированной архитектуре

«Представление  данных с помощью XML и использование XPath» 
 
 
 
 

Выполнил:

ст. гр. ИУС-11сз

Носов А.В. 

Проверил:

Привалов  М.В.

Сурова А.Г. 

Донецк – 2011

Цель: Научиться представлять информацию в виде XML-документов, формировать их в приложениях C# и выполнять выборку интересующих данных с помощью языка XPath 

Вариант 7: При подведении итогов референдума в г. Донецке от разных районов была получена информация: название района, общее число жителей, имеющих право голоса, число жителей, принявших участие в референдуме, число жителей, голосовавших «Да» и число жителей, голосовавших «Нет». Создать документ, включающий района с процентом голосов «Да» выше заданного, районы процентом голосов «Нет» выше заданного, и 3 района, имеющих наименьший процент активности избирателей.  

Листинг программы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Xml.XPath;

using System.Xml; 

namespace SOA_XML

{

    public partial class Form1 : Form

    {

        XPathDocument doc;

        XPathNavigator nav;

        XPathExpression path; 

        public Form1()

        {

            InitializeComponent();

        } 

        private void MyFunc(string str)

        {

            int i = 0, j = 0;

            double num;

            path = nav.Compile(str);

            XPathNodeIterator iterator = nav.Select(path);

            while (dataGridView1.Rows.Count > 0) dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 1);

            while (iterator.MoveNext())

            {

                XPathNavigator nav2 = iterator.Current.Clone();

                dataGridView1.Rows.Add();

                if (j > 0)

                {

                    num = Convert.ToDouble(nav2.Value);

                    dataGridView1.Rows[i].Cells[j].Value = num;

                }

                else

                {

                    dataGridView1.Rows[i].Cells[j].Value = nav2.Value;

                }

                j++;

                if (j > 4)

                {

                    dataGridView1.Rows[i].Cells[j].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[i].Cells[2].Value) / Convert.ToDouble(dataGridView1.Rows[i].Cells[1].Value) * 100, 2); j++;

                    dataGridView1.Rows[i].Cells[j].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[i].Cells[3].Value) / Convert.ToDouble(dataGridView1.Rows[i].Cells[2].Value) * 100, 2); j++;

                    dataGridView1.Rows[i].Cells[j].Value = Math.Round(Convert.ToDouble(dataGridView1.Rows[i].Cells[4].Value) / Convert.ToDouble(dataGridView1.Rows[i].Cells[2].Value) * 100, 2);

                    i++;

                    j = 0;

                }

            }

        } 

        private void button1_Click(object sender, EventArgs e)

        {

            openFileDialog1.InitialDirectory = " C:\\Documents and Settings\\Administrator\\Мои документы\\SOA-XML";

            openFileDialog1.FileName = "data.xml";

            openFileDialog1.ShowDialog();         

        } 

        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)

        {

            string FName;

            Text = "";

            textBox1.Text = FName = openFileDialog1.FileName;

            //MessageBox.Show(FName);

            doc = new XPathDocument(FName);

            nav = doc.CreateNavigator(); 

            path = nav.Compile("/city/author/*");

            XPathNodeIterator title = nav.Select(path);

            while (title.MoveNext())

            {

                XPathNavigator tmp = title.Current.Clone();

                Text += tmp.Value + " ";

            }

            MyFunc("/city/district/*");

        } 

        private void textBox2_TextChanged(object sender, EventArgs e)

        {

            int y =0;

            int n = 0;

            if (textBox2.Text!="") y = Convert.ToInt16(textBox2.Text);

            if (textBox3.Text != "") n = Convert.ToInt16(textBox3.Text);

            if (textBox2.Text == "") y = 0;

            if (textBox3.Text == "") n = 0;

            MyFunc("/city/district[yes div took_part*100>" + y + " and no div took_part*100>" + n + "]/*");

        } 

        private void textBox3_TextChanged(object sender, EventArgs e)

        {

            int y = 0;

            int n = 0;

            if (textBox2.Text != "") y = Convert.ToInt16(textBox2.Text);

            if (textBox3.Text != "") n = Convert.ToInt16(textBox3.Text);

            if (textBox2.Text == "") y = 0;

            if (textBox3.Text == "") n = 0;

            MyFunc("/city/district[yes div took_part*100>" + y + " and no div took_part*100>" + n + "]/*");

        } 

        private void button2_Click(object sender, EventArgs e)

        {

            saveFileDialog1.InitialDirectory = " C:\\Documents and Settings\\Administrator\\Мои документы\\SOA-XML ";

            saveFileDialog1.FileName = "result.xml";

            saveFileDialog1.ShowDialog();   

        } 

        private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)

        { 

            string title = Text;

            XmlWriter xw = XmlWriter.Create(saveFileDialog1.FileName);           

            xw.WriteStartDocument();

                xw.WriteStartElement("city");

                xw.WriteAttributeString("num", "1");

Информация о работе Представление данных с помощью XML и использование XPath