Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
iva_a
154 / 126 / 23
Регистрация: 02.01.2011
Сообщений: 913
#1

Как разбить файл XML на 2 или несколько - C#

17.05.2012, 14:37. Просмотров 2031. Ответов 9
Метки нет (Все метки)

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

Как с помощью XMLDocument или XMLDataDocument добавить данные в XML файл
У меня возникла такая проблема, необходимо добавить данные в XML файл, не...

Локализовать приложение не через dll файл, а через обычный xml или ini файл
Добрый вечер дамы и господа, у меня возникла такой вопросик. Как можно...

Сериализация каталога файлов в бинарный или xml файл
Доброго времени суток, уважаемы форумчане! Возникла такая проблема. Необходимо...

LINQ to XML или XPath to XML (выбор одного элемента)
Прошу помощи в LINQ или XPath запросе к XML Вот XML: <manifest...

Пропарсить и стандартизировать XML, XSL или Linq to XML?
Такой вопрос. необходимо считывать XML-файлы и приводить их к единому стандарту...

Как добавить данные в xml файл
Здравствуйте! Есть проект для тестирование учеников. Вопросы хранятся в xml...

9
SalterOk
116 / 113 / 10
Регистрация: 02.06.2011
Сообщений: 280
17.05.2012, 15:14 #2
для начала уточни что за столбец и таблица имеется в виду
каким образом XML представляется в таком виде? - неплохо бы на конкретном примере
0
iva_a
154 / 126 / 23
Регистрация: 02.01.2011
Сообщений: 913
17.05.2012, 15:23  [ТС] #3
Вот xml фаил .Мне надо , чтобы было из него несколько xml файлов, в которых 1 столбец был 1 и тот же - время-DateTime, а данные , по определенному количеству столбцов(сам xml -это таблица)
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
45
46
47
48
49
50
51
52
<?xml version="1.0" standalone="yes"?>
<_x0033_450>
  <Report_3450>
    <Date_Time>16-May-12 12:01:00 AM</Date_Time>
    <PLC_1>1.000</PLC_1>
    <Date_2>1.000</Date_2>
    <Day_3>11.000</Day_3>
    <comstat_4>1.000</comstat_4>
    <D2_5>1.000</D2_5>
    <D2_6>1.000</D2_6>
    <D4_7>1.000</D4_7>
    <D5_8>1.000</D5_8>
    <D6_9>1.000</D6_9>
    <D7_10>1.000</D7_10>
    <D8_11>1.000</D8_11>
    <O1_12>1.000</O1_12>
    <O2_13>1.000</O2_13>
    <A1_14>1.000</A1_14>
    <A2_15>1.000</A2_15>
    <A3_16>1.000</A3_16>
    <A4_17>1.000</A4_17>
    <A5_18>11.000</A5_18>
    <A6_19>1.000</A6_19>
    <Volt_20>11.000</Volt_20>
    <DN_21>1.000</DN_21>
    <C1_46>111.000</C1_46>
    <C3_48>11.000</C3_48>
    <C8_53>1111.000</C8_53>
  </Report_3450>
  <Report_3450>
    <Date_Time>16-May-12 1:10:00 AM</Date_Time>
    <PLC_1>199999.990</PLC_1>
    <Date_2>212.000</Date_2>
    <Day_3>12.000</Day_3>
    <comstat_4>21.000</comstat_4>
    <D2_5>65.000</D2_5>
    <D2_6>212.000</D2_6>
    <D4_7>12.000</D4_7>
    <D5_8>1212.000</D5_8>
  </Report_3450>
  <Report_3450>
    <Date_Time>16-May-12 5:01:00 AM</Date_Time>
    <PLC_1>56.000</PLC_1>
    <Date_2>56.000</Date_2>
    <Day_3>56.000</Day_3>
    <comstat_4>56.000</comstat_4>
    <D2_5>56.000</D2_5>
    <D2_6>56.000</D2_6>
    <D4_7>56.000</D4_7>
    <D5_8>1111111.000</D5_8>
  </Report_3450>
</_x0033_450>
0
SalterOk
116 / 113 / 10
Регистрация: 02.06.2011
Сообщений: 280
17.05.2012, 15:29 #4
то есть что-то вроде этого?
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
<?xml version="1.0" standalone="yes"?>
<_x0033_450>
  <Report_3450>
    <Date_Time>16-May-12 12:01:00 AM</Date_Time>
    <PLC_1>1.000</PLC_1>
    <Date_2>1.000</Date_2>
    <Day_3>11.000</Day_3>
    <comstat_4>1.000</comstat_4>
    <D2_5>1.000</D2_5>
    <D2_6>1.000</D2_6>
    <D4_7>1.000</D4_7>
    <D5_8>1.000</D5_8>
    <D6_9>1.000</D6_9>
    <D7_10>1.000</D7_10>
    <D8_11>1.000</D8_11>
    <O1_12>1.000</O1_12>
    <O2_13>1.000</O2_13>
    <A1_14>1.000</A1_14>
    <A2_15>1.000</A2_15>
    <A3_16>1.000</A3_16>
    <A4_17>1.000</A4_17>
    <A5_18>11.000</A5_18>
    <A6_19>1.000</A6_19>
    <Volt_20>11.000</Volt_20>
    <DN_21>1.000</DN_21>
    <C1_46>111.000</C1_46>
    <C3_48>11.000</C3_48>
    <C8_53>1111.000</C8_53>
  </Report_3450>
</_x0033_450>
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" standalone="yes"?>
<_x0033_450>  
  <Report_3450>
    <Date_Time>16-May-12 1:10:00 AM</Date_Time>
    <PLC_1>199999.990</PLC_1>
    <Date_2>212.000</Date_2>
    <Day_3>12.000</Day_3>
    <comstat_4>21.000</comstat_4>
    <D2_5>65.000</D2_5>
    <D2_6>212.000</D2_6>
    <D4_7>12.000</D4_7>
    <D5_8>1212.000</D5_8>
  </Report_3450>
</_x0033_450>
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" standalone="yes"?>
<_x0033_450>  
  <Report_3450>
    <Date_Time>16-May-12 5:01:00 AM</Date_Time>
    <PLC_1>56.000</PLC_1>
    <Date_2>56.000</Date_2>
    <Day_3>56.000</Day_3>
    <comstat_4>56.000</comstat_4>
    <D2_5>56.000</D2_5>
    <D2_6>56.000</D2_6>
    <D4_7>56.000</D4_7>
    <D5_8>1111111.000</D5_8>
  </Report_3450>
</_x0033_450>
0
iva_a
154 / 126 / 23
Регистрация: 02.01.2011
Сообщений: 913
17.05.2012, 15:44  [ТС] #5
Нет. Надо, чтобы в 1 таблице(Япотом преврашаю xml в pdf таблицу) были например столбцы
Date_Time PLC_1 Date_2 Day_3

а во 2 таблице

Date_Time comstat_4 D2_5 D2_6 D4_7 D5_8
С данными, конечно

Добавлено через 56 секунд
Т.е. разбиение не по строкам , а по столбцам
0
iva_a
154 / 126 / 23
Регистрация: 02.01.2011
Сообщений: 913
20.05.2012, 09:17  [ТС] #6
Вопрос остается в силе! Help!!!!!!
0
Петррр
6155 / 3455 / 896
Регистрация: 28.10.2010
Сообщений: 5,926
20.05.2012, 09:23 #7
iva_a, покажите какие файлы должны получиться из исходного.
0
iva_a
154 / 126 / 23
Регистрация: 02.01.2011
Сообщений: 913
20.05.2012, 10:20  [ТС] #8
Дело в том,что в конечном итоге мне нужно получить удобочитаемые таблицу в формате PDF.Т.е., чтобы данные вмешались на лист. PDF я получаю из XML. Сначала получаю большую таблицу в XML
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
45
46
47
48
49
50
51
52
<?xml version="1.0" standalone="yes"?>
<_x0033_450>
  <Report_3450>
    <Date_Time>16-May-12 12:01:00 AM</Date_Time>
    <PLC_1>1.000</PLC_1>
    <Date_2>1.000</Date_2>
    <Day_3>11.000</Day_3>
    <comstat_4>1.000</comstat_4>
    <D2_5>1.000</D2_5>
    <D2_6>1.000</D2_6>
    <D4_7>1.000</D4_7>
    <D5_8>1.000</D5_8>
    <D6_9>1.000</D6_9>
    <D7_10>1.000</D7_10>
    <D8_11>1.000</D8_11>
    <O1_12>1.000</O1_12>
    <O2_13>1.000</O2_13>
    <A1_14>1.000</A1_14>
    <A2_15>1.000</A2_15>
    <A3_16>1.000</A3_16>
    <A4_17>1.000</A4_17>
    <A5_18>11.000</A5_18>
    <A6_19>1.000</A6_19>
    <Volt_20>11.000</Volt_20>
    <DN_21>1.000</DN_21>
    <C1_46>111.000</C1_46>
    <C3_48>11.000</C3_48>
    <C8_53>1111.000</C8_53>
  </Report_3450>
  <Report_3450>
    <Date_Time>16-May-12 1:10:00 AM</Date_Time>
    <PLC_1>199999.990</PLC_1>
    <Date_2>212.000</Date_2>
    <Day_3>12.000</Day_3>
    <comstat_4>21.000</comstat_4>
    <D2_5>65.000</D2_5>
    <D2_6>212.000</D2_6>
    <D4_7>12.000</D4_7>
    <D5_8>1212.000</D5_8>
  </Report_3450>
  <Report_3450>
    <Date_Time>16-May-12 5:01:00 AM</Date_Time>
    <PLC_1>56.000</PLC_1>
    <Date_2>56.000</Date_2>
    <Day_3>56.000</Day_3>
    <comstat_4>56.000</comstat_4>
    <D2_5>56.000</D2_5>
    <D2_6>56.000</D2_6>
    <D4_7>56.000</D4_7>
    <D5_8>1111111.000</D5_8>
  </Report_3450>
</_x0033_450>
Потом пытаюсь разделить на 2 (а может и несколько, не знаю пока) XML файлов
Например, такои
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
<?xml version="1.0" standalone="yes"?>
<_x0033_450>
  <Report_3450>
    <Date_Time>16-May-12 12:01:00 AM</Date_Time>
    <PLC_1>1.000</PLC_1>
    <Date_2>1.000</Date_2>
    <Day_3>11.000</Day_3>
    <comstat_4>1.000</comstat_4>
    <D2_5>1.000</D2_5>
    <D2_6>1.000</D2_6>
    <D4_7>1.000</D4_7>
    <D5_8>1.000</D5_8>
    <D6_9>1.000</D6_9>
    <D7_10>1.000</D7_10>
    <D8_11>1.000</D8_11>
  </Report_3450>
  <Report_3450>
    <Date_Time>16-May-12 1:10:00 AM</Date_Time>
    <PLC_1>199999.990</PLC_1>
    <Date_2>212.000</Date_2>
    <Day_3>12.000</Day_3>
    <comstat_4>21.000</comstat_4>
    <D2_5>65.000</D2_5>
    <D2_6>212.000</D2_6>
    <D4_7>12.000</D4_7>
    <D5_8>1212.000</D5_8>
  </Report_3450>
  <Report_3450>
    <Date_Time>16-May-12 5:01:00 AM</Date_Time>
    <PLC_1>56.000</PLC_1>
    <Date_2>56.000</Date_2>
    <Day_3>56.000</Day_3>
    <comstat_4>56.000</comstat_4>
    <D2_5>56.000</D2_5>
    <D2_6>56.000</D2_6>
    <D4_7>56.000</D4_7>
    <D5_8>1111111.000</D5_8>
  </Report_3450>
</_x0033_450>
И такои
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" standalone="yes"?>
<_x0033_450>
  <Report_3450>
    <Date_Time>16-May-12 12:01:00 AM</Date_Time>
    <O1_12>1.000</O1_12>
    <O2_13>1.000</O2_13>
    <A1_14>1.000</A1_14>
    <A2_15>1.000</A2_15>
    <A3_16>1.000</A3_16>
    <A4_17>1.000</A4_17>
    <A5_18>11.000</A5_18>
    <A6_19>1.000</A6_19>
    <Volt_20>11.000</Volt_20>
    <DN_21>1.000</DN_21>
    <C1_46>111.000</C1_46>
    <C3_48>11.000</C3_48>
    <C8_53>1111.000</C8_53>
  </Report_3450>
</_x0033_450>
Все юто для того, чтобы в результате получить не бесконечную таблицу, которую невозможно нормально читать в PDF, а 2(или несколько) таблиц, которые помешаются на страницу - см attach
V attach - 1 таблица не помешается на лист, 2 и 3 - должны помещаться
0
Вложения
Тип файла: rar Tabl.rar (382.8 Кб, 8 просмотров)
Петррр
6155 / 3455 / 896
Регистрация: 28.10.2010
Сообщений: 5,926
20.05.2012, 10:34 #9
А в чем затруднение?
0
iva_a
154 / 126 / 23
Регистрация: 02.01.2011
Сообщений: 913
22.05.2012, 08:56  [ТС] #10
Петррр, Я Вас не поняла. Я не знаю как разбить 1 xml на несколько, если подскажите или посоветуете что почитать, буду очень признательна

Добавлено через 2 часа 53 минуты
Снова прошу помощи!
Помогите найти ошибку в коде. Код должен получить несколько таблиц с разными данными, но общим 1 столбцом - время. А на деле 5 раз вывожу 1 и ту же таблицу. Дебаг не помог пока. Понимаю, что где-то в циклаж запуталась, но никак не могу найти баг!
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
 DataSet ds = new DataSet(sUnitID);//sUnit - string , просто название папки
                   if (channelname.Count > 8)
                    {
                        for (int c = 0; c < (channelname.Count / 8); c++)//channelname-имена столбцов
                        {
                            DataTable mytable2 = ds.Tables.Add("Report_" + sUnitID + "_" + c.ToString());
                            DataColumn mycolumn2 = mytable2.Columns.Add("Date_Time", typeof(String));
 
                            for (int i = c; i < c+ 8; i++)
                            {
                                Console.WriteLine(channelname[i]);
                                mycolumn2 = mytable2.Columns.Add(channelname[i].Trim().Replace(" ", string.Empty), typeof(String));
                            }
 
                            SqlDataReader drXML2 = com.ExecuteReader();
 
                            while (drXML2.Read())
                            {
                                DataRow newrow2 = ds.Tables["Report_" + sUnitID + "_" + c.ToString()].NewRow();
                                newrow2["Date_Time"] = drXML2[0]; // 1 column - Date_Time
                                for (int k = c; k < c+8; k++)
                                {
                                    newrow2[channelname[k].Trim().Replace(" ", string.Empty)] = drXML2[k + 1];
                                }
                                ds.Tables["Report_" + sUnitID + "_" + c.ToString()].Rows.Add(newrow2);
                            }
 
                            drXML2.Close();
 
                        }
                    }
                   if (columnindex.Count > 8)//хочу, чтобы в таблицах было не больше 8 столбцов
                    {
                        for (int k = 0; k < (columnindex.Count / 8); k++)
                        {
                            for (int i = k; i < k + 8; i++)
                            {
 
                                if (ds.Tables["Report_" + sUnitID + "_" + i.ToString()].Rows.Count > 0)
                                    
                                    ds.WriteXml(tempdir + companyid + @"\" + sUnitID + "_" + i.ToString() + ".xml");   
                            }
                        }
                    }
Добавлено через 20 часов 22 минуты
Все еще страдаю

Добавлено через 22 часа 58 минут
Все получилось. Всем- спасибо за участие
0
22.05.2012, 08:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2012, 08:56
Привет! Вот еще темы с решениями:

Как трансформировать XML в файл Excel?
Есть XML файл хочу его трансформировать в файл EXCEL делаю примерно так: ...

Возможно ли разбить 1 таблицу на несколько в файле формата PDF средствами C#
Заказчик требует отчет именно в формате PDF. Отчет создается динамически, т.е....

Как сохранить xml файл без BOM?
Здравствуйте! Как сохранить xml файл в кодировке UTF-8 без BOM ?

Как парсить XML файл заведомо содержащий ошибки
XDocument, XmlDocument, XmlTextReader - они все встают на первой же ошибке. А...


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

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

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