Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 87

Парсинг Xml и запись в файл

30.01.2018, 16:51. Показов 1705. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, суть проблемы в следующем: мне необходимо пройти по всем полям Xml документа, вытащить всю информацию по двум вакансиям и записать их в 2 строчки (так как там 2 вакансии) в txt, но почему - то этого не происходит, запись происходит криво, разбиваясь на несколько строк, подскажите, пожалуйста, в чём проблема, почему это происходит и что необходимо изменить, ломаю голову уже несколько дней
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
XmlTextReader reader = new XmlTextReader(@"Proba.Xml");
            StreamWriter Zapic = new StreamWriter(@"C:\\1\\Dannie.txt");
            string K = "";
            while (reader.Read())
            {
                if (reader.IsStartElement("Vacancy") == false && reader.NodeType == XmlNodeType.Element)
                {
                    string L = Regex.Replace(reader.ReadString().ToLower(), "<[^>]*>*", "");
                    if (L != "")
                    {
                        K = K + L + ",";
                    }
                    else
                    {
                        K = K + "null";
                    }              
                }
                else if (reader.IsStartElement("Vacancy") == true && reader.LineNumber != 3)
                {
                    Zapic.WriteLine(K);
                    K = "";
                }
            }
            Zapic.WriteLine(K);
            Zapic.Close();
            Console.Read();
это код консольки, а вот код 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
<?xml version="1.0" encoding="utf-8"?>
<Vacansies >
  <Vacancy id="12612628">
    <Title>Engineering Systems Analyst</Title>
    <FullDescription>Some &lt;p&gt; &lt;b&gt;Some&lt;/b&gt; text&lt;/p&gt; &lt;p&gt;Some xxxx&lt;/p&gt;Engineering Systems Analyst Dorking Surrey Salary ****K Our client is located in Dorking, Surrey and are looking for Engineering Systems Analyst our client provides spe******t software development Keywords Mathematical Modelling, Risk Analysis, System Modelling, Optimisation, MISER, PIONEEER Engineering Systems Analyst Dorking Surrey Salary ****K</FullDescription>
    <Address>
      <LocationRaw>Dorking, Surrey, Surrey</LocationRaw>
      <LocationNormalized>Dorking</LocationNormalized>
    </Address>
    <ContractType>
      Some &lt;p&gt; &lt;b&gt;Some&lt;
      Some &lt;p&gt; &lt;b&gt;Some&lt;
      Some &lt;p&gt; &lt;b&gt;Some&lt;
      text&lt;/p&gt; &lt;p&gt;
    </ContractType>
    <ContractTime>permanent</ContractTime>
    <Company>Gregory Martin International</Company>
    <Category>Engineering Jobs</Category>
    <SalaryRaw>20000 - 30000/annum 20-30K</SalaryRaw>
    <SalaryNormalized>25000</SalaryNormalized>
    <Source>
      <SourceName>cv-library.co.uk</SourceName>
      <Contacts>
        <Phone>+ (4-3) 36--7543-</Phone>
        <Email>bqxsvw@52Cw.ua</Email>
      </Contacts>
    </Source>
  </Vacancy>
  <Vacancy id="12612830">
    <Title>Stress Engineer Glasgow</Title>
    <FullDescription>Some &lt;p&gt; &lt;b&gt;Some&lt;/b&gt; text&lt;/p&gt; &lt;p&gt;Some xxxx&lt;/p&gt;Stress Engineer Glasgow Salary **** to **** We re currently looking for talented engineers to join our growing Glasgow team at a variety of levels. The roles are ideally suited to high calibre engineering graduates with any level of appropriate experience, so that we can give you the opportunity to use your technical skills to provide high quality input to our aerospace projects, spanning both aerostructures and aeroengines. In return, you can expect good career opportunities and the chance for advancement and personal and professional development, support while you gain Chartership and some opportunities to possibly travel or work in other offices, in or outside of the UK. The Requirements You will need to have a good engineering degree that includes structural analysis (such as aeronautical, mechanical, automotive, civil) with some experience in a professional engineering environment relevant to (but not limited to) the aerospace sector. You will need to demonstrate experience in at least one or more of the following areas: Structural/stress analysis Composite stress analysis (any industry) Linear and nonlinear finite element analysis Fatigue and damage tolerance Structural dynamics Thermal analysis Aerostructures experience You will also be expected to demonstrate the following qualities: A strong desire to progress quickly to a position of leadership Professional approach Strong communication skills, written and verbal Commercial awareness Team working, being comfortable working in international teams and self managing PLEASE NOTE SECURITY CLEARANCE IS REQUIRED FOR THIS ROLE Stress Engineer Glasgow Salary **** to ****</FullDescription>
    <Address>
      <LocationRaw>Glasgow, Scotland, Scotland</LocationRaw>
      <LocationNormalized>Glasgow</LocationNormalized>
    </Address>
    <ContractType></ContractType>
    <ContractTime>permanent</ContractTime>
    <Company>Gregory Martin International</Company>
    <Category>Engineering Jobs</Category>
    <SalaryRaw>25000 - 35000/annum 25-35K</SalaryRaw>
    <SalaryNormalized>30000</SalaryNormalized>
    <Source>
      <SourceName>cv-library.co.uk</SourceName>
      <Contacts>
        <Phone> + -89-6-99-898</Phone>
        <Email>f5sy2f@rLP5.ua</Email>
      </Contacts>
    </Source>
  </Vacancy>
</Vacansies>
А также результат записи КриваяЗапись.txt
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.01.2018, 16:51
Ответы с готовыми решениями:

Запись XML-дерева сразу в xml-файл (парсер JAXP)
Народ!Программеры!Помогите человеку,плиз! Парсерю я xml-файл,через DOM-модель,использую JAXP.После модификации надо все дерево записать в...

Парсинг XML файл в Excel на сервере
Добрый день, Подскажите, пожалуйста, есть задача: На сервере хранится файл .xml ~3Гб, его надо распарсить в Excel файл в таблицу и...

Парсинг сайта и запись результатов в файл
Здравствуйте. Можно ли написать такую программу которая поиском найдет этот кусок текста, и сохранит этот текст в txt файл? Так...

13
22 / 25 / 8
Регистрация: 17.09.2017
Сообщений: 61
31.01.2018, 00:02
Посмотри в сторону десериализации. Очень просится применить её сюда...
0
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 87
31.01.2018, 08:16  [ТС]
gnomello, я попробовал - не помогает, я просто не могу понять, почему так происходит
0
Эксперт .NET
 Аватар для Rius
13115 / 7676 / 1674
Регистрация: 25.05.2015
Сообщений: 23,419
Записей в блоге: 14
31.01.2018, 08:25
mihuil, покажите то, что хотите получить, в нормальном виде, а не кривом.
0
 Аватар для _katon_
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
31.01.2018, 09:29
Запись разбивается на несколько строк потому что WriteLine.
0
22 / 25 / 8
Регистрация: 17.09.2017
Сообщений: 61
31.01.2018, 17:11
не могу понять в чём проблемы с десериализацией?
Кликните здесь для просмотра всего текста
класс для работы с твоим файлом xml
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
//------------------------------------------------------------------------------
// <auto-generated>
//     Этот код создан программой.
//     Исполняемая версия:4.0.30319.42000
//
//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
//     повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
 
using System.Xml.Serialization;
 
// 
// This source code was auto-generated by xsd, Version=4.6.1055.0.
// 
 
 
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class Vacansies
{
 
    private VacansiesVacancy[] itemsField;
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Vacancy", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public VacansiesVacancy[] Items
    {
        get
        {
            return this.itemsField;
        }
        set
        {
            this.itemsField = value;
        }
    }
}
 
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class VacansiesVacancy
{
 
    private string titleField;
 
    private string fullDescriptionField;
 
    private string contractTypeField;
 
    private string contractTimeField;
 
    private string companyField;
 
    private string categoryField;
 
    private string salaryRawField;
 
    private string salaryNormalizedField;
 
    private VacansiesVacancyAddress[] addressField;
 
    private VacansiesVacancySource[] sourceField;
 
    private string idField;
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string Title
    {
        get
        {
            return this.titleField;
        }
        set
        {
            this.titleField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string FullDescription
    {
        get
        {
            return this.fullDescriptionField;
        }
        set
        {
            this.fullDescriptionField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string ContractType
    {
        get
        {
            return this.contractTypeField;
        }
        set
        {
            this.contractTypeField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string ContractTime
    {
        get
        {
            return this.contractTimeField;
        }
        set
        {
            this.contractTimeField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string Company
    {
        get
        {
            return this.companyField;
        }
        set
        {
            this.companyField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string Category
    {
        get
        {
            return this.categoryField;
        }
        set
        {
            this.categoryField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string SalaryRaw
    {
        get
        {
            return this.salaryRawField;
        }
        set
        {
            this.salaryRawField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string SalaryNormalized
    {
        get
        {
            return this.salaryNormalizedField;
        }
        set
        {
            this.salaryNormalizedField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Address", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public VacansiesVacancyAddress[] Address
    {
        get
        {
            return this.addressField;
        }
        set
        {
            this.addressField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Source", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public VacansiesVacancySource[] Source
    {
        get
        {
            return this.sourceField;
        }
        set
        {
            this.sourceField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlAttributeAttribute()]
    public string id
    {
        get
        {
            return this.idField;
        }
        set
        {
            this.idField = value;
        }
    }
}
 
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class VacansiesVacancyAddress
{
 
    private string locationRawField;
 
    private string locationNormalizedField;
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string LocationRaw
    {
        get
        {
            return this.locationRawField;
        }
        set
        {
            this.locationRawField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string LocationNormalized
    {
        get
        {
            return this.locationNormalizedField;
        }
        set
        {
            this.locationNormalizedField = value;
        }
    }
}
 
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class VacansiesVacancySource
{
 
    private string sourceNameField;
 
    private VacansiesVacancySourceContacts[] contactsField;
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string SourceName
    {
        get
        {
            return this.sourceNameField;
        }
        set
        {
            this.sourceNameField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("Contacts", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public VacansiesVacancySourceContacts[] Contacts
    {
        get
        {
            return this.contactsField;
        }
        set
        {
            this.contactsField = value;
        }
    }
}
 
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.6.1055.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class VacansiesVacancySourceContacts
{
 
    private string phoneField;
 
    private string emailField;
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string Phone
    {
        get
        {
            return this.phoneField;
        }
        set
        {
            this.phoneField = value;
        }
    }
 
    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string Email
    {
        get
        {
            return this.emailField;
        }
        set
        {
            this.emailField = value;
        }
    }
}


код
Кликните здесь для просмотра всего текста
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
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
 
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Program program = new Program();
            program.DeserializeObject(@"E:\test.xml");
            
 
        }
        private void DeserializeObject(string filename)
        {
            Console.WriteLine("Reading with XmlReader");
 
            // Create an instance of the XmlSerializer specifying type and namespace.
            XmlSerializer serializer = new XmlSerializer(typeof(Vacansies));
 
            // A FileStream is needed to read the XML document.
            FileStream fs = new FileStream(filename, FileMode.Open);
            XmlReader reader = XmlReader.Create(fs);
 
            // Declare an object variable of the type to be deserialized.
            Vacansies i;
 
            // Use the Deserialize method to restore the object's state.
            i = (Vacansies)serializer.Deserialize(reader);
            fs.Close();
 
            // Write out the properties of the object.
            
            Console.Write(
            i.Items[0].Title + "\n" +
            i.Items[0].FullDescription + "\n" +
            i.Items[0].id);
            Console.ReadLine();
        }
    }
}

для примера в консоли показывает 3 поля. Просто не совсем понятно какой именно файл тебе нужно сформировать и какую информацию вытянуть из XML
0
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 87
31.01.2018, 20:26  [ТС]
Rius, мне нужно чтобы в txt записалось всего две строчки с содержимым полей через запятую по вакансиям (их там всего 2 прописаны) типо вот:
цукцукййк,йцукукйук,йцукйцукц,йцуукй -(1-ая вакансия)
йцук,йцук,йцук,йцук,йцук,йцук,йцук,йцук - (2-ая вакансия)

Добавлено через 5 минут
_katon_, writeLine тут не при чём, он стоит там осознано, он как раз должен разделять новой строчкой содержимое распаршенных всех полей, так как условие стоит такое, а именно:
C#
1
reader.IsStartElement("Vacancy") == true
это строчка в условии проверяет на элемент vacansy, если поток дошёл до этой строки, значит в переменной k содержится все поля по предыдущей vacansy, после прохождения этого условия он как раз записывает её в файл, а потом обнуляет и так дальше, пока все вакансии не пройдёт

Добавлено через 4 минуты
gnomello, я возможно мог что-то не так сделать, так как ранее не приходилось работать с этим, я поработаю ещё с этой темой, но всё равно, хочется понять почему он всё таки оставляет вот эти отступы и при чём я заметил особенность, что при определённом коде для чтения Xml у меня выходило так, что записанное содержимое полей в текстовом файле в точности повторяло визуальную структуру Xml, именно поэтому такой интерес, спасибо ещё раз за идею, я поработаю над ней
0
Эксперт .NET
 Аватар для Rius
13115 / 7676 / 1674
Регистрация: 25.05.2015
Сообщений: 23,419
Записей в блоге: 14
31.01.2018, 20:37
mihuil, каких именно полей? Я спрашивал образец требуемого файла результата.В образце xml нигде нет йцукенов.
0
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 87
31.01.2018, 22:04  [ТС]
Rius, Dannie.txt вот как здесь, две строки, в которых содержатся все поля по каждой вакансии
0
Эксперт .NET
 Аватар для Rius
13115 / 7676 / 1674
Регистрация: 25.05.2015
Сообщений: 23,419
Записей в блоге: 14
31.01.2018, 22:21
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
using ConsoleAppMihuil.Properties;
using System;
using System.IO;
using System.Linq;
using System.Xml.Linq;
 
namespace ConsoleAppMihuil
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<string, string> clean = str => str.Replace("\r", "").Replace("\n", "").Replace("<p>", "").Replace("</p>", "").Replace("<b>", "").Replace("</b>", "").ToLower();
 
            XDocument doc = XDocument.Parse(Resources.data);
            var res = doc.Root.Elements("Vacancy").Select(x => string.Join(", ", x.Descendants().Select(y => clean(y.Value)).Where(y => !string.IsNullOrEmpty(y))));
 
            using (var stream = new StreamWriter("output.txt"))
            {
                foreach (var item in res)
                {
                    stream.WriteLine(item);
                }
            }
        }
    }
}
Вложения
Тип файла: zip ConsoleAppMihuil.zip (9.1 Кб, 8 просмотров)
0
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 87
02.02.2018, 12:58  [ТС]
Rius, спасибо работает, но боюсь не подойдёт для обработки гиговых файлов Xml
0
Эксперт .NET
 Аватар для Rius
13115 / 7676 / 1674
Регистрация: 25.05.2015
Сообщений: 23,419
Записей в блоге: 14
02.02.2018, 13:25
Кликните здесь для просмотра всего текста
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 ConsoleAppMihuil.Properties;
using System;
using System.IO;
using System.Xml;
 
namespace ConsoleAppMihuil
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<string, string> clean = str => str.Replace("\r", "").Replace("\n", "").Replace("<p>", "").Replace("</p>", "").Replace("<b>", "").Replace("</b>", "").ToLower();
 
            using (var inputStream = new StringReader(Resources.data))
            {
                using (var reader = XmlReader.Create(inputStream))
                {
                    using (var outputStream = new StreamWriter("output.txt"))
                    {
                        bool textWritten = false;
 
                        while (reader.Read())
                        {
                            switch (reader.NodeType)
                            {
                                case XmlNodeType.EndElement:
                                    {
                                        if (reader.Name == "Vacancy")
                                        {
                                            outputStream.Write(Environment.NewLine);
                                        }
                                        else if (textWritten)
                                        {
                                            outputStream.Write(",");
                                        }
 
                                        textWritten = false;
                                        break;
                                    }
                                case XmlNodeType.Text:
                                    {
                                        string str = clean(reader.Value);
 
                                        if (!string.IsNullOrWhiteSpace(str))
                                        {
                                            outputStream.Write(str);
                                            textWritten = true;
                                        }
 
                                        break;
                                    }
                                default:
                                    break;
                            }
                        }
                    }
                }
            }
 
        }
    }
}
Вложения
Тип файла: zip ConsoleAppMihuil.zip (9.3 Кб, 3 просмотров)
0
5 / 5 / 3
Регистрация: 11.11.2014
Сообщений: 88
05.02.2018, 13:30
Посмотрите еще LINQ to XML, очень удобная штука для навигации по документу
0
0 / 0 / 0
Регистрация: 23.07.2016
Сообщений: 87
05.02.2018, 23:41  [ТС]
Rius, спасибо, помогло, да и я уже тоже разобрался благодаря вашему коду - при считывании Xml документа там есть один не экранированный символ, который, как раз, приводит к переводу на новую строку, это как раз \r то, что у вас стоит в replace, вот я и засунул его в регулярку, теперь всё нормально, спасибо ещё раз )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2018, 23:41
Помогаю со студенческими работами здесь

Парсинг url строки и запись в файл
Есть сайт. На нём должна быть следующая конструкция - если ввести слово после &quot;/&quot; то оно должно записаться в файл(в корне сайта...

Асинхронный парсинг страниц и запись в файл
Задача: асинхронно парсить страницы сайта site.ru, вида site.ru/page/1-n, и записывать их содержимое в файл. Не могу разобраться с...

Есть файл xml, который сохранен в ClientBin. Как добавлять запись в этот в файл
Доброго времени суток. Есть файл xml, который сохранен в ClientBin. Вопрос как добавлять запись в этот в файл? Например не в...

Парсинг таблиц с сайта и запись результатов в файл
Есть код Imports System.Text.RegularExpressions Imports System Imports System.IO Imports System.Text Public Class Form1 ...

Запись в xml файл
Добрый день. Возник вопрос. using (XmlWriter wr = XmlWriter.Create(&quot;test2.xml&quot;)) { ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru