|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Импорт XML файла в Visual Basic 2010 |
|
.NET - Импорт XML файла в Visual Basic 2010
|
Пользователь Сообщения: 66 |
Профиль | Отправить PM | Цитировать
Доброго времени суток.
Есть XML файл: <?xml version="1.0" encoding="windows-1251"?> <document> <data> <next1>777</next1> <next2>888</next2> <next3>999</next3> <next4 ROWNUM="1">1</next4> <next4 ROWNUM="2">2</next4> <next4 ROWNUM="3">3</next4> <next4 ROWNUM="4">4</next4> </data> </document> Код: Imports System.Xml Imports System.Data Public Class Form1 #Region "XML" Public Shared Function EmptyStringToNull(ByVal o As String) As Object Dim ret As Object = DBNull.Value Try If o.Trim.Length = 0 Then ret = DBNull.Value Else ret = o End If Catch ex As Exception End Try Return ret End Function Private Sub ReadXMLFile() Dim xmlDoc As New System.Xml.XmlDocument Dim root As XmlElement = Nothing Dim nodes As XmlNodeList = Nothing Dim node As XmlNode = Nothing Dim xmlFile As String = "" Try OpenFileDialog1.ShowDialog() xmlFile = OpenFileDialog1.FileName xmlDoc.Load(xmlFile) root = xmlDoc.DocumentElement nodes = root.SelectNodes("//document/data") 'The XMLPath Me.DataGridView1.Rows.Clear() 'Clear Grid For Each node In nodes Me.DataGridView1.Rows.Add(EmptyStringToNull(node("next1").InnerText), EmptyStringToNull(node("next2").InnerText), EmptyStringToNull(node("next3").InnerText), EmptyStringToNull(node("next4").InnerText)) Next Catch ex As Exception End Try End Sub #End Region Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ReadXMLFile() End Sub End Class Как сделать, чтобы в столбец next4 грузились все данные: |
|
Отправлено: 23:24, 03-06-2012 |
В Поисках Истины Сообщения: 802
|
Профиль | Отправить PM | Цитировать а структура этого xml именно нужна такая?
Ну в общем вот какая картина: У типа XmlNode есть свойство NextSibling, которое, как я понял, пока есть еще элементы с одним "названием" next4 возвращает следующий XmlNode. То есть получается так: Dim XN As XmlNode = Nothing ........... XN = node("next4") при добавлении первой строки берем XN.InnerText While(пока есть еще элементы) XN = XN.NextSibling; Me.DataGridView1.Rows.Add("", "", "", XN.InnerText) EndWhile P.S. C VB не знаком, могут быть ошибки... |
------- Последний раз редактировалось LilLoco, 04-06-2012 в 14:14. Отправлено: 13:56, 04-06-2012 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 66
|
Профиль | Отправить PM | Цитировать Цитата LilLoco:
LilLoco, Спасибо большое, все работает. |
|
Отправлено: 14:15, 04-06-2012 | #12 |
В Поисках Истины Сообщения: 802
|
Профиль | Отправить PM | Цитировать neo21, Обращайтесь
|
------- Отправлено: 14:28, 04-06-2012 | #13 |
Пользователь Сообщения: 66
|
Профиль | Отправить PM | Цитировать LilLoco, А как сделать если, XML фаил будет иметь такой вид:
<?xml version="1.0" encoding="windows-1251"?> <document> <data> <next1>777</next1> <next2>888</next2> <next3>999</next3> <next4 ROWNUM="2">1</next4> <next4 ROWNUM="4">2</next4> <next4 ROWNUM="6">3</next4> <next4 ROWNUM="8">4</next4> </data> </document> Если делаю так: For Each node In nodes Me.DataGridView1.Rows.Add(EmptyStringToNull(node("next1").InnerText), EmptyStringToNull(node("next2").InnerText), EmptyStringToNull(node("next3").InnerText), EmptyStringToNull(node("next4").InnerText)) Dim XN As XmlNode = Nothing XN = node("next4") For i = 0 To 100 XN = XN.NextSibling Me.DataGridView1.Rows.Add("", "", "", XN.InnerText) Next i Next А надо в выбранные строки ROWNUM="2",ROWNUM="4",ROWNUM="6",ROWNUM="8": |
Отправлено: 19:03, 04-06-2012 | #14 |
В Поисках Истины Сообщения: 802
|
Профиль | Отправить PM | Цитировать neo21, Сейчас я вам не могу точно сказать. Но у XmlNode есть свойства различные, среди которых есть даже "полное описание узла". Можно использовать его, парсить, выбирать номер строки, и дальше не сложная логика в какую строку вносить... Те строки, которые не нужны, просто все пустыми вставляете...
Теоретически так... На практике смогу только завтра посмотреть... Покопайтесь в свойствах, может можно и проще сделать... |
------- Отправлено: 19:32, 04-06-2012 | #15 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Открытие файла Excel в Visual Basic 2010 | neo21 | Программирование и базы данных | 18 | 27-07-2016 14:22 | |
Разное - [решено] Импорт таблицы Excel в Visual Basic 2010 | neo21 | Программирование и базы данных | 13 | 28-11-2011 00:22 | |
Разное - [решено] DataGridView в Visual Basic 2010 | neo21 | Программирование и базы данных | 2 | 22-11-2011 02:48 | |
Разное - [решено] Переименование файла в в Visual Basic 2010 | neo21 | Программирование и базы данных | 4 | 06-11-2011 12:11 | |
Разное - [решено] Progressbar в Visual Basic 2010 | neo21 | Программирование и базы данных | 4 | 30-10-2011 16:29 |
|