105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
1

Сохранение данных в XML-файл

21.07.2011, 20:54. Показов 20601. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот недавно отгремела тема про сохранение конфига в ini , но в ней же прозвучала и идея сохранения в xml. Не стал влезать в чужие темы, поэтому создал свою. Вопрос такой:как работать с файлами xml программно? За примеры литературы-отдельное спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.07.2011, 20:54
Ответы с готовыми решениями:

Сохранение в xml-файл данных из нескольких datagridview
Доброе утро! На форме есть несколько DataGridView с данными,которые загружаются из файла (для...

Сохранение данных из DataGridView в xml
Здрасти всем:) я уже 2 часа мучаюсь с сохранением в xml данных из таблицы DataGridView. Добавляю...

XML: Сохранение изображений в файл и передача файла по сети
Здравствуйте. Нужна консультация так сказать. Сохраняю изображения в XML документ для отправки на...

Сохранение данных в PDF-файл
Какой код нужно написать, что бы через MenuStrip программа сохранялась в PDF формат?

19
147 / 147 / 41
Регистрация: 01.12.2009
Сообщений: 275
21.07.2011, 21:26 2
В этой ветке есть тока два внятных примера тут и тут. Я совсем недавно эти примеры колупал.
1
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
21.07.2011, 21:38  [ТС] 3
Ох, ёмаё, как всё сложно. Прямо таки хочется процитировать Памирыча:"у меня проги маленькие, всё в файлик сохраняю" Но для будущего всё равно сгодится.
0
557 / 434 / 21
Регистрация: 16.12.2010
Сообщений: 953
21.07.2011, 21:42 4
Но с другой стороны XML имеет ряд преимуществ, быстрый доступ к нужному участку. и, при больших объемах данных выгоднее хранить в xml или в БД
0
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
21.07.2011, 21:44  [ТС] 5
Тоже верно
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
21.07.2011, 23:33 6
Лучший ответ Сообщение было отмечено как решение

Решение

Вообще в net с xml очень легко работать и есть много альтернативных средств для работы. Например, мне больше всего нравится Linq. К примеру у нас есть xml-файл
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<Root>
  <Country name="Russia">
    <Capital>Moscow</Capital>
    <Population>142 000 000</Population>
  </Country>
  <Country name="USA">
    <Capital>Washington</Capital>
    <Population>280 000 000</Population>
  </Country>
  <Country name="Germany">
    <Capital>Berlin</Capital>
    <Population>80 000 000</Population>
  </Country>
</Root>
Наша задача прочитать столицу России и изменить ее на Санкт-Петербург

Добавляем пространство имен System.Xml.Linq
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Dim fileName As String = "D:\Exp\ccc.xml"
        'загрузка документа
        Dim xdoc As XDocument = XDocument.Load(fileName)
        'получаем столицу России
        For Each xe As XElement In xdoc.Element("Root").Elements("Country")
            If xe.Attribute("name").Value = "Russia" Then
                Console.WriteLine(xe.Element("Capital").Value)
                'Изменить столицу
                xe.Element("Capital").Value = "St.Petersburg"
            End If
        Next
Как видно, все очень просто.
15
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
22.07.2011, 06:08 7
Eugene22, какой Framework для этого нужен?
Подразумевает ли это решение подключение библиотеки?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
22.07.2011, 09:26 8
Лучший ответ Сообщение было отмечено как решение

Решение

net 3.5,4.0
Библиотека в проект подключена по умолчанию, ее нужно только пометить вверху со оператором Imports
VB.NET
1
Imports System.Xml.Linq
3
Памирыч
22.07.2011, 09:31
  #9

Не по теме:

Я со второго не слажу, поэтому не получилось.

0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
22.07.2011, 10:34 10
в моем примере из поста 6 забыл дописать в конце строчку
VB.NET
1
xdoc.Save(fileName)
- для сохранения измененного файла
0
Ефрейтор
185 / 156 / 6
Регистрация: 20.07.2009
Сообщений: 226
22.07.2011, 10:40 11
Памирыч, подкинь пример на 2-м Framework-е.
я нашел один пример с использованием
VB.NET
1
Imports System.Xml.Serialization
но код по сравнению с кодом Eugene22 будет в раза 4 больше.
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
22.07.2011, 13:04 12
prog13, надо искать, если принципиально, поищу.
А код, да, больше и геморнее
0
Ефрейтор
185 / 156 / 6
Регистрация: 20.07.2009
Сообщений: 226
22.07.2011, 13:18 13
Цитата Сообщение от Памирыч Посмотреть сообщение
А код, да, больше и геморнее
ну раз так, то не ищи.
0
105 / 33 / 1
Регистрация: 01.10.2010
Сообщений: 310
23.07.2011, 12:51  [ТС] 14
Eugene22, спасибо за пример. Постараюсь на досуге заняться изучением xml в VB.net
P.S
Цитата Сообщение от Eugene22 Посмотреть сообщение
Наша задача прочитать столицу России и изменить ее на Санкт-Петербург
Да здравствует революция!!!=)
0
26 / 1 / 1
Регистрация: 02.08.2011
Сообщений: 6
03.08.2011, 14:15 15
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

Господа а не подскажет ли кто, из премногоуважаемых как дописывать в конец xml файла
т.е. чтобы было что то на подобие лог файла (если быть более точным это будет бд)
или ткните мордой где по человечески о сем написано.

Добавлено через 2 часа 19 минут
Все спасибо уже ненадо
Уже сам нашел
если кому понадобится
то вот пример

VB.NET
1
2
3
4
5
6
7
8
9
10
Dim sw As StreamWriter = File.AppendText("logfile-entries.txt")
Dim xtw As New XmlTextWriter(sw)
 
        xtw.WriteStartElement("event")
        xtw.WriteElementString("ip", "192.168.0.1")
        xtw.WriteElementString("http_method", "POST")
        xtw.WriteElementString("file", "comments.aspx")
        xtw.WriteElementString("date", "1999-05-05T19:25:13.238220-08:00")
 
        xtw.Close()
1
26 / 1 / 1
Регистрация: 02.08.2011
Сообщений: 6
08.08.2011, 12:28 16
вот еще полезная вешчь
дописывает в конец xml файла перед последним закрывающим тегом
мне очень помогло

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim newCards As String = data
 
        ' Load the XmlDocument.
        Dim xd As New XmlDocument()
        xd.Load("z:\XmlTest.xml")
 
        ' Create a new XmlDocumentFragment for our document.
        Dim docFrag As XmlDocumentFragment = xd.CreateDocumentFragment()
        ' The Xml for this fragment is our newPerson string.
        docFrag.InnerXml = newCards
        ' The root element of our file is found using
        ' the DocumentElement property of the XmlDocument.
        Dim root As XmlNode = xd.DocumentElement
        ' Append our new Person to the root element.
        root.AppendChild(docFrag)
 
        ' Save the Xml.
        xd.Save("z:\XmlTest.xml")
переменную передаю примерно такую туда
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim newCards As String = _
            "<Cardnumb ID='8'>" & cr & _
            "    <Cards_Type Type='1'/>" & cr & _
            "   <Cards_Type_Code Code='1'/>" & cr & _
            "    <Raion Raion='15'/>" & cr & _
            "    <Name>Pipiskin Ivan</Name>" & cr & _
            "    <Date>10.10.2011</Date>" & cr & _
            "    <Product>" & cr & _
            "        <LM_Code>12345678</LM_Code>" & cr & _
            "        <Name>Сверло для Пенопласта</Name>" & cr & _
            "        <Price>180</Price>" & cr & _
            "        <Qty>2</Qty>" & cr & _
            "    </Product>" & cr & _
            "    <Product>" & cr & _
            "    <LM_Code>12345678</LM_Code>" & cr & _
            "        <Name>Метелка для туалета</Name>" & cr & _
            "        <Price>180</Price>" & cr & _
            "        <Qty>2</Qty>" & cr & _
            "    </Product>" & cr & _
            "</Cardnumb>"
0
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 15
07.01.2012, 23:29 17
Подскажите, на 1 странице в 6 посту имеется пример, в 1 строке путь к xml файлу, а если он в интернете?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
07.01.2012, 23:35 18
Цитата Сообщение от tortman Посмотреть сообщение
а если он в интернете?
загружаешь файл из интернета с помощью класса WebClient
0
19 / 19 / 0
Регистрация: 05.02.2015
Сообщений: 175
19.10.2015, 12:17 19
Доброго времени суток коллеги. Есть вот такой код считывания данных с xml
Код

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim Xdoc As XDocument = XDocument.Load(Application.StartupPath & "\ShablonPosts.xml")
        For Each el As XElement In Xdoc.Element("Lists").Elements("Title")
            If el.Attribute("id").Value = AddForm.DescriptionText.Text Then
                With AddForm
                    .DescriptionText.Text = el.Element("Description").Value
                    .OfficeText.Text = el.Element("OfficeName").Value
                End With
                If AddForm.name = "NewUserForm" Then
                    NewUserForm.UserGroup.Items.Clear()
                    NewUserForm.UserGroupShort.Items.Clear()
                    Do While XmlNodeType.EndElement
                         For Each elMo As XElement In Xdoc.Element("Lists").Elements("Title")
                            NewUserForm.UserGroup.Items.Add(el.Element("Num" & IncCount).Value)
                            NewUserForm.UserGroupShort.Items.Add(Mid(Split("Num" & IncCount, ",")(0), 4))
                        Next
                    Loop
                End If
            Else
 
            End If
        Next


И соответственно сам файл

Кликните здесь для просмотра всего текста

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="utf-8"?>
<Lists>
  <Title id="Тест1">
    <Description>text1</Description>
    <OfficeName>text2</OfficeName>
    <memberOf>
      <Num1>text1</Num1>
      <Num2>text2</Num2>
      <Num3>text3</Num3>
    </memberOf>
  </Title>
  <Title id="Тест2">
    <Description>text1</Description>
    <OfficeName>text2</OfficeName>
    <memberOf>
      <Num1>text1</Num1>
      <Num2>text2</Num2>
      <Num3>text3</Num3>
      <Num4>text4</Num4>
    </memberOf>
  </Title>
</Lists>


Допустим в AddForm.DescriptionText.Text записано Тест2
Как подправить вот эту часть кода

Не по теме:

Do While XmlNodeType.EndElement - просто набросок кода :-)


VB.NET
1
2
3
4
5
6
 Do While XmlNodeType.EndElement
                         For Each elMo As XElement In Xdoc.Element("Lists").Elements("Title")
                            NewUserForm.UserGroup.Items.Add(el.Element("Num" & IncCount).Value)
                            NewUserForm.UserGroupShort.Items.Add(Mid(Split("Num" & IncCount, ",")(0), 4))
                        Next
                    Loop
Чтобы данные элементов Num1, Num2, Num3, Num4 элемента Title id="Тест2" попали в коллекцию NewUserForm.UserGroup ?
0
19 / 19 / 0
Регистрация: 05.02.2015
Сообщений: 175
20.10.2015, 16:29 20
Если кому интересно, то код следующий:
VB.NET

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim Xdoc As XDocument = XDocument.Load(Application.StartupPath & "\ShablonPosts.xml")
        For Each el As XElement In Xdoc.Element("Lists").Elements("Title")
            If el.Attribute("id").Value = AddForm.DescriptionText.Text Then
                With AddForm
                    .DescriptionText.Text = el.Element("Description").Value
                    .OfficeText.Text = el.Element("OfficeName").Value
                End With
                If AddForm.name = "NewUserForm" Then
                     With NewUserForm
                        .UserGroup.Items.Clear()
                        .UserGroupShort.Items.Clear()
                     End With
                    Do Until el.Elements("memberOf").Nodes.Count <= IncCount
                        For Each elMo As XElement In el.Element("memberOf").Elements("Num" & Increment(IncCount))
                            NewUserForm.UserGroup.Items.Add(elMo.Value)
                            NewUserForm.UserGroupShort.Items.Add(Mid(Split(elMo.Value, ",")(0), 4))
                        Next
                    Loop
                    IncCount = 0
                End If
            Else
 
            End If
        Next
0
20.10.2015, 16:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2015, 16:29
Помогаю со студенческими работами здесь

Сохранение введенных данных в во внешний файл
У меня в данный момент реализовано сохранение настроек (сохраняет пользовательские параметры,...

Сохранение всех внесенных данных в формах в файл
Всем привет форумчане и сразу к делу мне надо что бы при нажатии клавиши выход схранялись все...

Некорректность экспорта данных из DataGridView в файл XML
Подскажите в чем может быть загвоздка? Я сначала считываю разные разделы XML файла в разные...

Как добавить данные в xml-файл, используя пространство имен System.Xml.Linq
Допустим, есть файл xml, я его взял из этого треда:...


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

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

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