Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
19 / 19 / 4
Регистрация: 29.10.2009
Сообщений: 150

Отформатировать XML

27.04.2011, 11:51. Показов 3129. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть XML вида:
XML
1
2
3
<object   attr="someAttr">
   <inner>text</inner>
</object>
и таких файлов много.
Необходимо переобразовать его в красивый (или не в красивый) файл по строго определенному единому формату, т.е. либо убрать лишние пробелы (перед attr например) и все сделать в одну строку, либо создать красивый XML, но чтоб поступающие файлы форматировались по единому правилу. Подскажите в какую либу смотреть.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2011, 11:51
Ответы с готовыми решениями:

Отформатировать текст
Допустим дан произвольный текст: Петров вася иванович; 20;test@mail.ru Сидоров артур петрович; ,98,; Игнатьев Сидор...

Отформатировать правильно инициалы
Пытаюсь сделать помощника при вводе инициалов Нужно вводить вручную кучу фамилий и инициалов в формате: в одном текстбоксе Фамилия, в...

Как отформатировать с выравниванием?
имеются три переменные: ulong (0 to 38) string (size 0 to 10) double (0.0 to 99.00) нужно показать так (не уверен, что браузер...

6
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
27.04.2011, 11:55
если единый файл со строгим форматом - я бы попробовал посмотреть в сторону сериализации...
если без сериализации - в сторону System.Xml и System.Xml.Linq
0
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
27.04.2011, 12:06
А если все разные? трабл только с пробелами...
Вообще-то тут не надо никаких сериализаторов/десериализаторов, да и С# тут тоже не надо.
NotePad++ в зубы, Ctrl+R и читаем про регэкспы...
0
19 / 19 / 4
Регистрация: 29.10.2009
Сообщений: 150
27.04.2011, 12:32  [ТС]
Цитата Сообщение от znake Посмотреть сообщение
если единый файл со строгим форматом - я бы попробовал посмотреть в сторону сериализации...
если без сериализации - в сторону System.Xml и System.Xml.Linq
структура XML одинаковая, вы это имеете ввиду? все, что нужно, это переобразовать эти файлы в идентичный вид. Т.е. если есть два вот таких файла:
XML
1
2
3
<object   attr="someAttr">
   <inner>text</inner>
</object>
XML
1
2
3
<object attr="someAttr">
   <inner>  text</inner   >
</object>
то нужно получить на выходе два одинаково сформированных, либо так:
XML
1
2
3
<object attr="someAttr">
   <inner>text</inner>
</object>
либо так:
XML
1
<object attr="someAttr"><inner>text</inner></object>
мне потом нужно будет сравнивать их хэши: одинаковые ли в них данные или нет. Если в одном из двух файлов будет стоять лишний пробел - хэш уже будет полюбому другой. Причем в одном файле может быть два элемента object которые нужно сравнивать, так что выцеплять по одиночку и сравнивать необходимо именно кусок файла, а не сами файлы. Для этого мне и необходимо привести их в единый вид.
0
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
27.04.2011, 14:05
ну чтож...я уже сказал оба пути, по которым можно решить проблему...примеры использования обоих путей на форуме (да и в интернете в целом) есть... дерзай...
0
19 / 19 / 4
Регистрация: 29.10.2009
Сообщений: 150
27.04.2011, 15:14  [ТС]
Цитата Сообщение от znake Посмотреть сообщение
ну чтож...я уже сказал оба пути, по которым можно решить проблему...примеры использования обоих путей на форуме (да и в интернете в целом) есть... дерзай...
да о пространстве имен xml я конечно же знаю, но примеров не нашел на форуме.
0
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
27.04.2011, 15:20
пример чтения с занесением в датагрид
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
                XDocument xml_document = XDocument.Load(filepath);
                XElement root = xml_document.Root;
                int i;
                foreach (XElement query_element in root.Elements("query"))
                {
                    i = 0;
                    data_grid_for_scripts.Rows.Add();
                    foreach (XElement part_element in query_element.Elements())
                    {
                        data_grid_for_scripts.Rows[data_grid_for_scripts.Rows.Count - 1].Cells[i].Value = part_element.Value.ToString();
                        i = i + 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
                //пишем шапку ХМЛ-ки
                XmlDocument xml_document = new XmlDocument();
                XmlDeclaration xml_declaration = xml_document.CreateXmlDeclaration("1.0", "UTF-8", String.Empty);
                XmlElement root = xml_document.CreateElement("root");
                xml_document.AppendChild(root);
                xml_document.InsertBefore(xml_declaration, root);
 
                //Добавляем элементы в корневой узел
                foreach (DataGridViewRow str in data_grid_for_scripts.Rows)
                {
                    XmlElement query_element = xml_document.CreateElement("query");
                    root.AppendChild(query_element);
                    XmlElement name_element = xml_document.CreateElement("name");
                    query_element.AppendChild(name_element);
                    XmlText name_value = xml_document.CreateTextNode(str.Cells[0].Value.ToString());
                    name_element.AppendChild(name_value);
                    XmlElement scheme_element = xml_document.CreateElement("scheme");
                    query_element.AppendChild(scheme_element);
                    XmlText scheme_value = xml_document.CreateTextNode(str.Cells[1].Value.ToString());
                    scheme_element.AppendChild(scheme_value);
                    XmlElement script_element = xml_document.CreateElement("script");
                    query_element.AppendChild(script_element);
                    XmlText script_value = xml_document.CreateTextNode(str.Cells[2].Value.ToString());
                    script_element.AppendChild(script_value);
                    XmlElement note_element = xml_document.CreateElement("note");
                    query_element.AppendChild(note_element);
                    XmlText note_value = xml_document.CreateTextNode(str.Cells[3].Value.ToString());
                    note_element.AppendChild(note_value);
                }
                //Сохраняем
                xml_document.Save(filepath);


та 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>
  <query>
    <name>запрос 1</name>
    <scheme>схема1</scheme>
    <script>текст селект блабла</script>
    <note>заметка</note>
  </query>
  <query>
    <name>запрос 2</name>
    <scheme>схема2</scheme>
    <script>select * фром чегонибудь</script>
    <note>еще что-то</note>
  </query>
</root>


вот пример (это не пример того как надо делать - я тогда сам лишь пробовал)...но помочь разобраться это сможет...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.04.2011, 15:20
Помогаю со студенческими работами здесь

Как отформатировать текст
Допустим у меня есть текст &quot;Ваш ключ: WHWJHJFHDGF2&quot; , нужно отформатировать его, что бы осталось только WHWJHJFHDGF2

Отформатировать число, разделив на разряды
Ребята, помогите пожалуйста. Поставлена такая задача. Дано число, к примеру, 123456790. В итоге необходимо вывести 1 234 567,90 . Короче...

Отформатировать текст с фиксацией его ширины
C# Дано целое число K (&gt; 25) и текстовый файл, содержащий текст, вы- ровненный по левому краю. Абзацы текста отделяются друг от друга одной...

Отформатировать NTFS без использования консоли
Привет. Нужно отформатировать NTFS без использования консоли. От нее решил отказаться, т.к. в консоль нужно передавать нажатия...

Отформатировать заданный массив строк по ширине
Заданный массив строк произвольной длины. Отформатировать заданный массив строк по ширине поля.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки 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. На борту пять. . .
Камера 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