Автор: Пользователь скрыл имя, 19 Декабря 2011 в 13:48, лабораторная работа
Цель: Научиться представлять информацию в виде XML-документов, формировать их в приложениях C# и выполнять выборку интересующих данных с помощью языка XPath
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ, МОЛОДЕЖИ И СПОРТА УКРАИНЫ
ДОНЕЦКИЙ
НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Лабораторная работа №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(
while (iterator.MoveNext())
{
XPathNavigator nav2 = iterator.Current.Clone();
dataGridView1.Rows.Add();
if (j > 0)
{
num = Convert.ToDouble(nav2.Value);
dataGridView1.Rows[i].Cells[j]
}
else
{
dataGridView1.Rows[i].Cells[j]
}
j++;
if (j > 4)
{
dataGridView1.Rows[i].Cells[j]
dataGridView1.Rows[i].Cells[j]
dataGridView1.Rows[i].Cells[j]
i++;
j = 0;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.
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.
saveFileDialog1.FileName = "result.xml";
saveFileDialog1.ShowDialog();
}
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
string title = Text;
XmlWriter
xw = XmlWriter.Create(
xw.WriteStartDocument();
xw.WriteStartElement("city");
xw.WriteAttributeString("num", "1");
Информация о работе Представление данных с помощью XML и использование XPath