С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
4 / 4 / 1
Регистрация: 08.07.2010
Сообщений: 29
1

Атрибуты

16.07.2010, 15:15. Показов 2111. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста вывести данные в атрибуты XML. Данные которые находятся в t.txt
#Software: Microsoft Internet Information Services 7.0
#Version: 1.0
#Date: 2010-06-25 05:13:52
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
05:13:52 2010-06-25 10.4.4.101 POST /SPACE1/ISwitchMemberCtxSvcFacade.rem - 80 - 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 401 2 5 171
2010-06-25 05:13:52 10.4.4.101 POST /SPACE1/IServerApplicationsAgent.rem - 80 - 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 401 2 5 15
2010-06-25 05:14:15 10.4.4.101 POST /SPACE1/ISwitchMemberCtxSvcFacade.rem - 80 SC\login1 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 200 0 0 23603
2010-06-25 05:14:15 10.4.4.101 POST /SPACE1/IServerApplicationsAgent.rem - 80 SC\login1 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 200 0 0 23868
2010-06-25 05:14:24 10.4.4.101 POST /SPACE1/IServerApplicationsAgent.rem - 80 - 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 401 2 5 0
2010-06-25 05:14:24 10.4.4.101 POST /SPACE1/IServerApplicationsAgent.rem - 80 SC\login1 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 200 0 0 0
2010-06-25 05:14:24 10.4.4.101 POST /SPACE1/IAppRunWatcherExtensionFacade.rem - 80 - 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 401 2 5 0
2010-06-25 05:14:24 10.4.4.101 POST /SPACE1/IAppRunWatcherExtensionFacade.rem - 80 SC\login1 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 200 0 0 124
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
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml.Linq;
using System.Linq;
using DocumentFormat.OpenXml.Vml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml;
using System.Xml;
using Microsoft.Office.Tools.Excel;
using DocumentFormat.OpenXml.Spreadsheet;
using DocumentFormat.OpenXml.Drawing.Charts;
using DocumentFormat.OpenXml.Drawing.Spreadsheet;
using DocumentFormat.OpenXml.Drawing;
 
namespace Programming_CSharp
{
    class Test
    {
 
        public static void Main()
        {
            string fileName = "c:\\base.xml";
            const string file = "C:\\t.txt";
            const string marker = "#Fields:";
 
            var headers = new List<string>();
            var entries = new List<IList<string>>();
            var line = string.Empty;
 
            // load data
            using (var x = new StreamReader(file))
                while ((line = x.ReadLine()) != null)
                    if (!line.StartsWith("#"))
                        entries.Add(new List<string>(line.Trim(' ').Split(' ')));
                    else if (line.StartsWith(marker))
                        headers.AddRange(line.Replace(marker, null).Trim(' ').Split(' '));
 
 
            XDocument doc = new XDocument();
            doc.Add(new XElement("root"));
 
            // view data
            foreach (var x in entries)
            {
                Console.WriteLine("Entry:");
 
                for (int i = 0; i < headers.Count; i++)
                    doc.Root.Add(new XElement("track",
                             new XAttribute( headers[i], x[i])));
                    //Console.WriteLine("\t" + headers[i] + ":\t" + x[i]);
                Console.ReadLine();
            }
            doc.Save(fileName);
        }
    }
}
Добавлено через 8 минут
Я понял почему, потому что в массив headers[i] передавались скобки cs(User-Agent). мне нужно их изменить ни cs_User-Agent_ на знак _. как это сделать???

Добавлено через 34 минуты
Пытаюсь делать вот так и нечего
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
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml.Linq;
using System.Linq;
using DocumentFormat.OpenXml.Vml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml;
using System.Xml;
using Microsoft.Office.Tools.Excel;
using DocumentFormat.OpenXml.Spreadsheet;
using DocumentFormat.OpenXml.Drawing.Charts;
using DocumentFormat.OpenXml.Drawing.Spreadsheet;
using DocumentFormat.OpenXml.Drawing;
 
namespace Programming_CSharp
{
    class Test
    {
 
        public static void Main()
        {
            string fileName = "c:\\base.xml";
            const string file = "C:\\t.txt";
            const string marker = "#Fields:";
 
            var headers = new List<string>();
            var entries = new List<IList<string>>();
            var line = string.Empty;
 
            // load data
            using (var x = new StreamReader(file))
                while ((line = x.ReadLine()) != null)
                    if (!line.StartsWith("#"))
                        entries.Add(new List<string>(line.Trim(' ').Split(' ')));
                    else if (line.StartsWith(marker))
                        headers.AddRange(line.Replace(marker, null).Trim(' ').Split(' '));
 
 
            XDocument doc = new XDocument();
            doc.Add(new XElement("root"));
 
            // view data
            foreach (var x in entries)
            {
                Console.WriteLine("Entry:");
 
                for (int i = 0; i < headers.Count; i++)
                {  //   doc.Root.Add(new XElement("track",
                    //          new XAttribute("headers", x[i])));
                    
                    string name = headers[i].Replace('(', '_').Replace(')', '_');
                    Console.WriteLine("\t" + headers[i] + ":\t" + x[i]);
                }
                   
                Console.ReadLine();
            }
            doc.Save(fileName);
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2010, 15:15
Ответы с готовыми решениями:

Атрибуты класса и атрибуты объекта
в чем разница атрибута класса и атрибута объекта? препод задал вопрос : &quot;функция доступа set()...

Атрибуты
Уважаемы знатоки с sharp, объясните пожалуйста начинающему, что такое атрибуты и для чего они...

Атрибуты изображения
Добрый утр/день/вечер. Как можно быстро получать информацию об изображении? Мне необходимо...

Атрибуты и рефлексия
Добрый день. Для решения каких задач и как часто используются атрибуты и рефлексия?

2
62 / 44 / 14
Регистрация: 01.07.2009
Сообщений: 145
16.07.2010, 15:30 2
Пользуйтесь, пожалуйста, тегами! Бывает трудно разобрать.

Не совсем понятно, зачем вы объявляете переменную string name?
Она ведь потом нигде не используется!

Функция Replace как раз и возвращает результат операции замены, т.е надо:
C#
1
headers[i] = headers[i].Replace('(', '_').Replace(')', '_');
1
4 / 4 / 1
Регистрация: 08.07.2010
Сообщений: 29
16.07.2010, 18:52  [ТС] 3
Спасибо. но я уже с этим разобрался, подскажите пожалуйста как сделать так чтобы атрибуты были в одну строку.
Это данные которые находятся в t.txt #Software: Microsoft Internet Information Services 7.0
#Version: 1.0
#Date: 2010-06-25 05:13:52
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-06-25 05:13:52 10.4.4.101 POST /SPACE1/ISwitchMemberCtxSvcFacade.rem - 80 - 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 401 2 5 171
2010-06-25 05:13:52 10.4.4.101 POST /SPACE1/IServerApplicationsAgent.rem - 80 - 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 401 2 5 15
2010-06-25 05:14:15 10.4.4.101 POST /SPACE1/ISwitchMemberCtxSvcFacade.rem - 80 SC\login1 10.4.4.63 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CL R+2.0.50727.3607+) 200 0 0 23603
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
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml.Linq;
using System.Linq;
using DocumentFormat.OpenXml.Vml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml;
using System.Xml;
using Microsoft.Office.Tools.Excel;
using DocumentFormat.OpenXml.Spreadsheet;
using DocumentFormat.OpenXml.Drawing.Charts;
using DocumentFormat.OpenXml.Drawing.Spreadsheet;
using DocumentFormat.OpenXml.Drawing;
 
namespace Programming_CSharp
{
    class Test
    {
 
        public static void Main()
        {
            string fileName = "c:\\base.xml";
            const string file = "C:\\t.txt";
            const string marker = "#Fields:";
 
            var headers = new List<string>();
            var entries = new List<IList<string>>();
            var line = string.Empty;
 
            // load data
            using (var x = new StreamReader(file))
                while ((line = x.ReadLine()) != null)
                    if (!line.StartsWith("#"))
                        entries.Add(new List<string>(line.Trim(' ').Split(' ')));
                    else if (line.StartsWith(marker))
                        headers.AddRange(line.Replace(marker, null).Trim(' ').Split(' '));
 
            XDocument doc = new XDocument();
            doc.Add(new XElement("root"));
            
            foreach (var x in entries)
            {
                for (int i = 0; i < headers.Count; i++)
                {  
                    string name = headers[i].Replace('(', '_').Replace(')', '_');
                     doc.Root.Add(new XElement("track",new XAttribute(name , x[i])));
                     //Console.WriteLine("\t" + name+ ":\t" + x[i]);
                     //Console.ReadLine();
                }
            }
            doc.Save(fileName);
        }
    }
}
получаю результат <?xml version="1.0" encoding="utf-8"?>
XML
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
<root>
  <track date="2010-06-25" />
  <track time="05:13:52" />
  <track s-ip="10.4.4.101" />
  <track cs-method="POST" />
  <track cs-uri-stem="/SPACE1/ISwitchMemberCtxSvcFacade.rem" />
  <track cs-uri-query="-" />
  <track s-port="80" />
  <track cs-username="-" />
  <track c-ip="10.4.4.63" />
  <track cs_User-Agent_="Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+)" />
  <track sc-status="401" />
  <track sc-substatus="2" />
  <track sc-win32-status="5" />
  <track time-taken="171" />
  <track date="2010-06-25" />
  <track time="05:13:52" />
  <track s-ip="10.4.4.101" />
  <track cs-method="POST" />
  <track cs-uri-stem="/SPACE1/IServerApplicationsAgent.rem" />
  <track cs-uri-query="-" />
  <track s-port="80" />
  <track cs-username="-" />
  <track c-ip="10.4.4.63" />
  <track cs_User-Agent_="Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+)" />
  <track sc-status="401" />
  <track sc-substatus="2" />
  <track sc-win32-status="5" />
  <track time-taken="15" />
  <track date="2010-06-25" />
  <track time="05:14:15" />
  <track s-ip="10.4.4.101" />
  <track cs-method="POST" />
  <track cs-uri-stem="/SPACE1/ISwitchMemberCtxSvcFacade.rem" />
  <track cs-uri-query="-" />
  <track s-port="80" />
  <track cs-username="SC\login1" />
  <track c-ip="10.4.4.63" />
  <track cs_User-Agent_="Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+)" />
  <track sc-status="200" />
  <track sc-substatus="0" />
  <track sc-win32-status="0" />
  <track time-taken="23603" />
</root>
а мне нужно <track date="2010-06-25" />
XML
1
2
3
4
5
6
 <track time="05:13:52"  s-ip="10.4.4.101"  cs-method="POST"  cs-uri-stem="/SPACE1/ISwitchMemberCtxSvcFacade.rem"  cs-uri-query="-"  s-port="80"  cs-username="-" 
  c-ip="10.4.4.63"  cs_User-Agent_="Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+5.1.2600.196608;+MS+.NET+Remoting;+MS+.NET+CLR+2.0.50727.3607+)" 
   sc-status="401" 
   sc-substatus="2"
   sc-win32-status="5"
   time-taken="171"
0
16.07.2010, 18:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2010, 18:52
Помогаю со студенческими работами здесь

Атрибуты файла
Почему не получается установить атрибуты файлу? if (File.GetAttributes(_path) ==...

Статические атрибуты
Здравствуйте, еще вопрос. Помогите разобраться в атрибутах. Допустим создаются элементы(это может...

Атрибуты в xml
Есть код: for (int i = 0; i &lt; l; i++) // Иду по x-у, l = Длина матрицы ...

Атрибуты свойств классов
Объясните пожалуйста, какого различие в объявлении переменных класса: public int val { ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru