powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / используя xmlDocument добавить запись в базу данных
7 сообщений из 7, страница 1 из 1
используя xmlDocument добавить запись в базу данных
    #34125557
zh13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как используя xmlDocument добавить запись в базу данных?
есть xml такого типа:
<?xml version="1.0" encoding="UTF-8"?>
<tables>
<table name="">
<field name="" type=""/>
<field name="" type=""/>
</table>
<table name="">
<field name="" type=""/>
<field name="" type=""/>
<field name="" type=""/>
</table>
</tables>
необходимо его загрузить и вытащить все <table> и <field>. Затем выполнить SqlCommand для каждой <field>. Не подскажите как это сделать?=/
...
Рейтинг: 0 / 0
используя xmlDocument добавить запись в базу данных
    #34125614
Poul_Ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, zh13, Вы писали:

Z>как используя xmlDocument добавить запись в базу данных?
Z>есть xml такого типа:
Z><?xml version="1.0" encoding="UTF-8"?>
Z><tables>
Z> <table name="">
Z> <field name="" type=""/>
Z> <field name="" type=""/>
Z> </table>
Z> <table name="">
Z> <field name="" type=""/>
Z> <field name="" type=""/>
Z> <field name="" type=""/>
Z> </table>
Z></tables>
Z>необходимо его загрузить и вытащить все <table> и <field>. Затем выполнить SqlCommand для каждой <field>. Не подскажите как это сделать?=/

Примерно так:

XmlDocument doc=new XmlDocument();
doc.Load(...); // Загрузка XML из файла или потока; doc.LoadXml(...) для загрузки из строки

XPathNavigator nav=doc.CreateNavigator();
nav.MoveToRoot();
if (!nav.MoveToChild("tables",string.Empty)) // Второй параметр - namespaceURI
  return;

if (!nav.MoveToChild("table",string.Empty)) return;
do
{
  string tableName=nav.GetAttribute("name",string.Empty);
  if (!nav.MoveToChild("field",string.Empty)) continue;
  do
  {
     string fieldName=GetAttribute("name",string.Empty);
     string fieldType=GetAttribute("type",string.Empty);
     // Создаём SqlCommand, выполняем
  } while (nav.MoveToNext("field",string.Empty);
  nav.MoveToParent();
} while (nav.MoveToNext("table",string.Empty));

Можно извратиться — используя XSLT сгенерировать код запроса сразу из XML. Если интересно, могу подсказать.
...
Рейтинг: 0 / 0
используя xmlDocument добавить запись в базу данных
    #34127214
BonJorno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В случае с MSSQL я считывал XML и подавал целиком на вход хп, а там через OPENXML...дело техники
...
Рейтинг: 0 / 0
используя xmlDocument добавить запись в базу данных
    #34128783
zh13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В случае с MSSQL я считывал XML и подавал целиком на вход хп, а там через OPENXML...дело техники

а ты не мог бы легкий пример показать? заранее благодарен.
...
Рейтинг: 0 / 0
используя xmlDocument добавить запись в базу данных
    #34128794
zh13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, zh13, Вы писали:

Z>как используя xmlDocument добавить запись в базу данных?
Z>есть xml такого типа:
Z><?xml version="1.0" encoding="UTF-8"?>
Z><tables>
Z> <table name="">
Z> <field name="" type=""/>
Z> <field name="" type=""/>
Z> </table>
Z> <table name="">
Z> <field name="" type=""/>
Z> <field name="" type=""/>
Z> <field name="" type=""/>
Z> </table>
Z></tables>
Z>необходимо его загрузить и вытащить все <table> и <field>. Затем выполнить SqlCommand для каждой <field>. Не подскажите как это сделать?=/

Примерно так:

XmlDocument doc=new XmlDocument();
doc.Load(...); // Загрузка XML из файла или потока; doc.LoadXml(...) для загрузки из строки

XPathNavigator nav=doc.CreateNavigator();
nav.MoveToRoot();
if (!nav.MoveToChild("tables",string.Empty)) // Второй параметр - namespaceURI
return;

if (!nav.MoveToChild("table",string.Empty)) return;
do
{
string tableName=nav.GetAttribute("name",string.Empty);
if (!nav.MoveToChild("field",string.Empty)) continue;
do
{
string fieldName=nav.GetAttribute("name",string.Empty);
string fieldType=nav.GetAttribute("type",string.Empty);
// Создаём SqlCommand, выполняем
} while (nav.MoveToNext("field",string.Empty);
nav.MoveToParent();
} while (nav.MoveToNext("table",string.Empty));

Можно извратиться — используя XSLT сгенерировать код запроса сразу из XML. Если интересно, могу подсказать.

Спасибо.
по поводу XSLT, мне сказали что если таким образом делать то не исключена возможность SQL-вставки. Я не профи и поэтому делаю как сказали


Еще вопросик: можно как-то отобразить на страничке загруженные узлы..?
...
Рейтинг: 0 / 0
используя xmlDocument добавить запись в базу данных
    #34128965
BonJorno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XmlDocument myXML = new XmlDocument();
StringWriter sw = new StringWriter();
XmlTextWriter xw = new XmlTextWriter(sw);
myXML.Load(@"c:\upload\" + filename + ".xml");
myXML.WriteTo(xw);

System.Data.SqlClient.SqlParameter doc = DBSource.Parameters.Add("@doc", SqlDbType.NText);
doc.Value = sw.ToString();

Про OPENXML доходчиво на MSDN, очень простые примеры
...
Рейтинг: 0 / 0
используя xmlDocument добавить запись в базу данных
    #34128999
Poul_Ko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, zh13, Вы писали:
...
Z>Еще вопросик: можно как-то отобразить на страничке загруженные узлы..?

Для отображения на странице XML-данных есть XmlDataSource. Его свойству Data можно присвоить строку с XML. Подключив к XmlDataSource, например GridView, получите табличное отображение XML-данных.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / используя xmlDocument добавить запись в базу данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]