Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
fKey
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 28
#1

Разобрать XML файл и вывести на форму - C#

05.12.2011, 10:57. Просмотров 1282. Ответов 8
Метки нет (Все метки)

Подскажите пожалуйста как с файла XML картинки из формата svg , разобрать этот файл и вывести на форму
,т.е. подгружать любой xml файл и он будет выводится на форме???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2011, 10:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Разобрать XML файл и вывести на форму (C#):

Разобрать XML и вывести значения в тегах в отдельный TXT файл - C#
Добрый день! Есть задача. Имеется xml файл. Необходимо разобрать его по тегам, и вывести содержимое тегов в отдельный txt файл. Посоветуйте...

Разобрать XML-файл - C#
Пожалуйста подскажите. Есть xml файл. <?xml version="1.0" encoding="utf-8"?> <?mso-application progid="Excel.Sheet"?> <Workbook...

Загрузить xml файл на форму в виде таблицы - C#
Здраствуйте! Помогите пожалуйста! Совсем запутался. Перелопатил кучу всего, но так и не понял. Как загрузить xml документ в какой нибудь...

Необходимо разобрать XML - C#
Здравствуйте, помогите пожалуйста спарсить следующий xml - файл: <forecast xmlns="http://weather.yandex.ru/forecast"...

.NET 3.x Прочитать XML файл и вывести трехуровневое дерево информации - C#
Доброго всем форумчанинам, задался попытаться сделать программу для вывода информации в Datagridview с неограниченным (по возможности)...

Как вывести файл PDF на форму (компонент справки) - C#
У меня такая проблема: есть pdf файл его нужно вывести на форму типо справки. как это можно осуществить использовать кристал или что то...

8
Бельфегор
662 / 575 / 33
Регистрация: 08.05.2009
Сообщений: 1,098
05.12.2011, 12:15 #2
Цитата Сообщение от fKey Посмотреть сообщение
т.е. подгружать любой xml файл и он будет выводится на форме???
Нет. Либо парсить файл, либо подключить готовые билблиотеки. пример
0
fKey
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 28
06.12.2011, 08:55  [ТС] #3
да только как эту библиотеку использовать нечего непойму
пишу в гугле скачать svglib выдается питоновская либ

Добавлено через 19 часов 57 минут
ап ап ап
0
fKey
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 28
07.12.2011, 05:45  [ТС] #4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Collections;
 
namespace SVGLib
{
        public partial class Form1 : Form
        {
            ArrayList lines = new ArrayList();
 
            public Form1()
            {
                InitializeComponent();
            }
 
            private void GetGraphicsFromStr(string str, List<PointF> pointList2, out float x0, out float y0)
            {
                x0 = 0f; y0 = 0f;
                if ((str.IndexOf("m") >= 0) && str.IndexOf("z") > str.IndexOf("m"))
                {
                    str = str.Substring(str.IndexOf("m") + 1, str.IndexOf("z") - str.IndexOf("m") - 1).Trim();
                    while (str.IndexOf("  ") >= 0) str = str.Replace("  ", " ");
                    str = str.Replace(" ", ",");
                    str = str.Replace("c", "0");
                    str = str.Replace("a", "0");
                    int i = 0;
                    x0 = 0f; y0 = 0f;
                    pointList2.Clear();
                    PointF lastPoint = new PointF(0,0);
                    pointList2.Add(lastPoint);
                    foreach (string s in str.Split(','))
                    {
                        switch (i)
                        {
                            case 0: x0 = Convert.ToSingle(s.Replace('.', ','));
                                break;
                            case 1: y0 = Convert.ToSingle(s.Replace('.', ','));
                                break;
                            default:
                                if (i % 2 == 0)
                                {
                                    lastPoint.X += Convert.ToSingle(s.Replace('.', ','));
                                }
                                else
                                {
                                    lastPoint.Y += Convert.ToSingle(s.Replace('.', ','));
                                    pointList2.Add(lastPoint);
                                }
                                break;
                        }
                        i++;
                    }
                }
            }
 
            private void DrawFigure(string FigureCoords, PaintEventArgs e, Pen myPen, List<PointF> pointList2, out float x0, out float y0)
            {
                System.Drawing.Drawing2D.GraphicsState state = e.Graphics.Save();
                e.Graphics.ResetTransform();
                GetGraphicsFromStr(FigureCoords,
                                    pointList2, out x0, out y0);
                e.Graphics.TranslateTransform(x0, y0);
                
                PointF[] points2 = pointList2.ToArray();
                System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
                path.AddLines(points2);
                path.CloseFigure();
                e.Graphics.DrawPath(myPen, path);
                e.Graphics.Restore(state);  
            }
 
            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                
                e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
                e.Graphics.TranslateTransform(-33.309996f, -291.935f);
 
                Pen myPen = new Pen(Color.Black, 0.3f);
 
                List<PointF> pointList2 = new List<PointF>();
                System.Drawing.Drawing2D.GraphicsState state = e.Graphics.Save();
 
                float x0, y0;
                for (int i = 0; i < lines.Count; i++)
                {
                    DrawFigure(lines[i].ToString(), e, myPen, pointList2, out x0, out y0);
                    //MessageBox.Show(lines[i].ToString());
                    
                }
            }
 
            private void button1_Click(object sender, EventArgs e)
            {
                
            }
 
            private void Form1_Load(object sender, EventArgs e)
            {
                SvgDoc doc = new SvgDoc();
 
                doc.LoadFromFile("C:\\sss.svg");
                string getXML1 = doc.GetXML();
                
                for (int i = 0; getXML1.IndexOf("z\"") != -1; i++)
                {
                    if (getXML1.IndexOf(" d=\"M") != -1 && getXML1.IndexOf(" d=\"M") < getXML1.IndexOf("z\""))
                    {
                        getXML1 = getXML1.Remove(0, getXML1.IndexOf(" d=\"M"));
                        //MessageBox.Show(getXML1);
 
                        string revLine = lines[i-1].ToString();
 
                        //MessageBox.Show(revLine);
 
                        char[] revChar = revLine.ToCharArray();
                        Array.Reverse(revChar);
                        revLine = new String(revChar);
 
                        //MessageBox.Show(revLine);
 
                        if (revLine.Contains("z"))
                        {
                            revLine = revLine.Remove(0, 2);
                            revLine = revLine.Remove(revLine.IndexOf(" "));
                        }
                        else
                            revLine = revLine.Remove(revLine.IndexOf(" "));
 
                        //MessageBox.Show(revLine);
 
                        revChar = revLine.ToCharArray();
 
                        Array.Reverse(revChar);
 
                        revLine = new String(revChar);
 
                        //MessageBox.Show(revLine);
 
                        lines.Add("m " + revLine + getXML1.Substring(getXML1.IndexOf(" d=\"M") + 5, getXML1.IndexOf("\" />") - getXML1.IndexOf(" d=\"M") - 5));
 
                        //MessageBox.Show(lines[i].ToString());
 
                        getXML1 = getXML1.Remove(0, getXML1.IndexOf("z\"") + 3);
                    }
                    else if (getXML1.IndexOf(" d=\"m") != -1 && getXML1.IndexOf(" d=\"m") < getXML1.IndexOf("z\""))
                    {
                        getXML1 = getXML1.Remove(0, getXML1.IndexOf(" d=\"m"));
                        //MessageBox.Show(getXML1);
                        lines.Add(getXML1.Substring(getXML1.IndexOf(" d=\"m") + 4, getXML1.IndexOf("\" />") - getXML1.IndexOf(" d=\"m") - 4));
                        //MessageBox.Show(lines[i].ToString());
                        getXML1 = getXML1.Remove(0, getXML1.IndexOf("z\"") + 3);
                    }   
                }
            }
        }
 
}
подскажите пожалуйста, есть ли другие способы разбора файла XML который в приложении? Cидеть писать каждый символ в цикле это ООчень долго+там еше не только линии -- градиенты +цвета.В итоге должен получится рисунок на форме xml version.docx
0
fKey
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 28
07.12.2011, 10:43  [ТС] #5
ХЕЛП ПЛиззз вопрос жизни и смерти уже неделю мучаюсь((
0
fKey
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 28
08.12.2011, 12:35  [ТС] #6
ап ап ап
0
Бельфегор
662 / 575 / 33
Регистрация: 08.05.2009
Сообщений: 1,098
08.12.2011, 13:47 #7
прикрепи пример XML-а с svg вставкой
0
fKey
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 28
08.12.2011, 14:03  [ТС] #8
Вот

svg+xml.rar
0
fKey
0 / 0 / 0
Регистрация: 08.08.2011
Сообщений: 28
12.12.2011, 05:09  [ТС] #9
ап ап ап
0
12.12.2011, 05:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2011, 05:09
Привет! Вот еще темы с ответами:

Получаю xml по url, как сохранить содержимое в новый xml файл, только чтобы структура не нарушилась? - C#
Когда делаю так, структура нарушается WebRequest request =...

.NET 4.x Поиск и substring, как разобрать файл, сериализованный на C++ - C#
Кто-то когда-то сериализовал таблицу в файл. Делал он это на C++. Исходники утеряны, но результат сериализзации остался :) Текстовый...

Разобрать код (Считывается файл побайтово в список типа List) - C#
Всем добрый день, расскажите пожалуйста по шагам что тут происходит - я не совсем понимаю public void Code(string filename) ...

Dictionary serialization: нужно провести сереализацию в бинарный файл и xml файл - C#
Помогите сереализоровать словарь вида: public class BankManager : Dictionary&lt;String, Bank&gt; {} Где Bank - сереализируемый объект....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru