Редактирование XML
Данные, хранящиеся в XML файле, можно редактировать прямо в клиентском браузере.
Открытие, редактирование и сохранение XML
В этой главе будет показано как открывать, редактировать и сохранять XML файл, хранящийся на сервере.
Для этого мы будем использовать XSL, чтобы преобразовать XML документ в HTML форму. Значения XML элементов будут записываться в поля ввода в HTML форме. HTML форму можно будет редактировать. После редактирования данные можно будет отправить на сервер, и XML файл будет обновлен (мы покажем соответствующий код на PHP и ASP).
XML и XSL файлы
Для примера возьмем следующий XML документ («tool.xml»):
HAMMER HG2606 32456240 $30.00
И соответствующую таблицу стилей XSL («tool.xsl»):
Код в приведенном выше XSL файле в цикле проходит по элементам XML файла и создает поле ввода для каждого XML элемента-«поля».
Значение атрибута «id» XML элемента-«поля» добавляется одновременно в атрибуты «id» и «name» каждого HTML поля ввода. Значение каждого XML элемента «value» добавляется в атрибут «value» каждого HTML поля ввода. В результате мы получаем редактируемую HTML форму, содержащую значения из XML файла.
Наконец, мы определяем вторую таблицу стилей XSL: «tool_updated.xsl». Этот XSL файл будет использоваться для отображения обновленных XML данных. Данная таблица стилей формирует не HTML форму, а статическую HTML таблицу:
Updated Tool Information:
PHP файл
В файле «tool.xsl» указываем в атрибуте action формы файл «edittool.php».
Файл «edittool.php» содержит две функции: функция loadFile() загружает и преобразовывает XML файл для дальнейшего отображения, а функция updateFile() применяет сделанные изменения в XML файле:
load($xml); $xslDoc = new DOMDocument(); $xslDoc->load($xsl); $proc = new XSLTProcessor(); $proc->importStyleSheet($xslDoc); echo $proc->transformToXML($xmlDoc); > function updateFile($xml) < $xmlLoad = simplexml_load_file($xml); $postKeys = array_keys($_POST); foreach($xmlLoad->children() as $x) < foreach($_POST as $key=>$value) < if($key == $x->attributes()) < $x->value = $value; > > > $xmlLoad->asXML($xml); loadFile($xml,"tool_updated.xsl"); > if($_POST["btn_sub"] == "") < loadFile("tool.xml", "tool.xsl"); >else < updateFile("tool.xml"); >?>
Примечание: Все преобразования и изменения XML файла делаются на сервере. Это кросс-браузерное решение. Пользователь получит только HTML страницу, что будет работать в любом браузере.
ASP файл
В файле «tool.xsl» указываем в атрибуте action формы файл «edittool.asp».
Файл «edittool.asp» содержит две функции: функция loadFile() загружает и преобразовывает XML файл для дальнейшего отображения, а функция updateFile() применяет сделанные изменения в XML файле:
Чем редактировать XML?
Если вам необходимо просто открыть файл XML, то вы можете воспользоваться программами из списка по ссылке: Чем открыть файл XML? Если же вам необходимо изменить (отредактировать) файл, мы подготовили соответствующий список специальных программ для работы с данным типом файлов.
Самый популярный XML редактор — это Notepad++ (для ОС Windows), однако изменить файл можно также, например, в JAPISoft EditiX (для ОС Mac). Ниже мы составили список программ для операционной системы Windows, Mac, Linux, Android, iOS. Вы можете скачать редактор бесплатно, кликнув по названию программы для вашей операционной системы — каждая из них гарантированно позволит осуществить редактирование нужного файла.
Программы для редактирования XML файлов на компьютере
Чем редактировать XML в Windows?
Altova XMLSpy
Microsoft Visual Studio
SyncRO Soft oXygen XML Editor
Liquid Technologies Liquid XML Studio
Progress Stylus Studio
JAPISoft EditiX
Wattle XMLwriter
Microsoft XML Notepad
Microsoft Excel
Mac
JAPISoft EditiX
ElfData XML Editor
Bare Bones BBEdit
MacroMates TextMate
Apple TextEdit
Linux
Android
File Viewer for Android
iOS
Alexander Blach Textastic Code Editor
Другие программы для формата XML
OpenOffice.org Calc
Общее описание расширения XML
Файл с расширением XML (XML File) — это формат, который относится к категории Файлы данных.
Файл XML является расширяемым видом языка разметки Markup Language. Такие файлы формата, представляют из себя документы, использующие теги в целях определения объектов, а также их атрибутов. XML формат, в отличие от HTML, наделяет пользователя возможностью самостоятельно задавать теги, которые применяет язык XML.
Знаете другие программы, которые могут редактировать файлы .XML? Не смогли разобраться как отредактировать файл? Пишите в комментариях — мы дополним статью и ответим на ваши вопросы.
Видео форматы
Аудио форматы
Электронные книги
Текстовые форматы
Дисковые образы
Табличные данные
Растровые изображения
Векторные изображения
Резервное копирование
Raw
Сжатые файлы
Файлы данных
Базы
3D Изображения
CAD файлы
Файлы разработчиков
Зашифрованные файлы
Исполняемые форматы
Шрифты
Файлы игр
GIS, карты
Другие расширения
Форматы макетов
Форматы плагинов
Файлы настроек
Системные файлы
Веб форматы
C# Внесение изменений в xml файл из txt файла
Есть два файла: Файл txt(файл источник), в котором 4 колонки и несколько строк Другой файл(файл в котором нужно сделать апдейт строк), формата xml. Вот часть кода xml файла который нужно заменить данными из текстовика.
Суть что бы заменить:
ConnectionManagaerID = «2й столбец txt»
ConnectionManagaerID = «1й столбец txt» не могу реализовать это обновление.
Пробовал с помощью массива, создание DataTable.
Отслеживать
задан 11 июн 2018 в 9:20
53 6 6 бронзовых знаков
Постройте программу на базе XmlReader -> XmlWriter, например. Или загрузите xml, выгрузите xml извесным для вас способом, что б разговор был более предметным. DataTable не подходит, потому что он позволяет редактировать только секцию «данные».
11 июн 2018 в 10:28
Можно прочесть в текст — и просто заменить в тексте.
11 июн 2018 в 10:29
Ок, DataTable отбрасываем. Как в C# по условию(ключу) сравнивается два файла?Я последовательно не могу прописать это. Что бы найти в интернете отдельные конструкции решения вопроса.
11 июн 2018 в 10:38
Можно так: А[i] == B[i] предварительно в А и B считав файлы.
11 июн 2018 в 10:41
Попробуйте по частям: 1) считать первый файл 2) считать второй файл 3) внести изменения 4) переписать файл. Сейчас у Вас слишком много шагов для одного вопроса.
11 июн 2018 в 10:52
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Имеем такой текстовой файл с таким содержимым
Package.ConnectionManagers[xxx]||Data Source=YYY; User Available Moths.dts
Имеем такой файл XML
После имеем такой файл
" connectionManagerRefId="Package.ConnectionManagers[xxx]" description="des. " name="OleDbConnection. " />
Вот код программы целиком, можете экспериментировать
class Program < static void Main(string[] args) < string xmlFile = @"D:\cons.xml"; string txtFile = @"D:\cons.txt"; //MakeXML(xmlFile); ChangeConnectionAttributes(xmlFile, txtFile); >private static void MakeXML(string xmlFile) < XDocument doc = new XDocument(); XElement elm = new XElement("connections", new XElement("connection", new XAttribute("refId", "PackageId. "), new XAttribute("connectionManagerID", "conManagerId. "), new XAttribute("connectionManagerRefId", "conManRefId. "), new XAttribute("description", "des. "), new XAttribute("name", "OleDbConnection. "))); doc.Add(elm); doc.Save(xmlFile); >private static void ChangeConnectionAttributes(string xmlFile, string txtFile) < var strs = File .ReadAllText(txtFile) .Split(new[] < '|' >, StringSplitOptions.RemoveEmptyEntries); XDocument doc = XDocument.Load(xmlFile); var c1 = doc.Descendants("connection") .First() .Attributes() .First(a => a.Name == "connectionManagerID").Value = strs[1]; var c2 = doc.Descendants("connection") .First() .Attributes() .First(a => a.Name == "connectionManagerRefId").Value = strs[0]; doc.Save(xmlFile); > >
Как внести изменения в xml файл
Для редактирования xml-документа (изменения, добавления, удаления элементов) мы можем воспользоваться методами класса XmlNode :
- AppendChild : добавляет в конец текущего узла новый дочерний узел
- InsertAfter : добавляет новый узел после определенного узла
- InsertBefore : добавляет новый узел до определенного узла
- RemoveAll : удаляет все дочерние узлы текущего узла
- RemoveChild : удаляет у текущего узла один дочерний узел и возвращает его
Класс XmlDocument добавляет еще ряд методов, которые позволяют создавать новые узлы:
- CreateNode : создает узел любого типа
- CreateElement : создает узел типа XmlDocument
- CreateAttribute : создает узел типа XmlAttribute
- CreateTextNode : создает узел типа XmlTextNode
- CreateComment : создает комментарий
Возьмем xml-документ people.xml из прошлой темы:
Microsoft 37 41
Добавим в этот xml-документ новый элемент :
using System.Xml; XmlDocument xDoc = new XmlDocument(); xDoc.Load("people.xml"); XmlElement? xRoot = xDoc.DocumentElement; // создаем новый элемент person XmlElement personElem = xDoc.CreateElement("person"); // создаем атрибут name XmlAttribute nameAttr = xDoc.CreateAttribute("name"); // создаем элементы company и age XmlElement companyElem = xDoc.CreateElement("company"); XmlElement ageElem = xDoc.CreateElement("age"); // создаем текстовые значения для элементов и атрибута XmlText nameText = xDoc.CreateTextNode("Mark"); XmlText companyText = xDoc.CreateTextNode("Facebook"); XmlText ageText = xDoc.CreateTextNode("30"); //добавляем узлы nameAttr.AppendChild(nameText); companyElem.AppendChild(companyText); ageElem.AppendChild(ageText); // добавляем атрибут name personElem.Attributes.Append(nameAttr); // добавляем элементы company и age personElem.AppendChild(companyElem); personElem.AppendChild(ageElem); // добавляем в корневой элемент новый элемент person xRoot?.AppendChild(personElem); // сохраняем изменения xml-документа в файл xDoc.Save("people.xml");
Добавление элементов происходит по одной схеме. Сначала создаем элемент ( xDoc.CreateElement(«person») ). Если элемент сложный, то есть содержит в себе другие элементы, то создаем эти элементы. Если элемент простой, содержащий внутри себя некоторое текстовое значение, то создаем этот текст ( XmlText companyText = xDoc.CreateTextNode(«Facebook»); ).
Затем все элементы добавляются в основной элемент person, а тот добавляется в корневой элемент ( xRoot.AppendChild(personElem); ).
Чтобы сохранить измененный документ на диск, используем метод Save : xDoc.Save(«people.xml»)
После этого в xml-файле появится следующий элемент:
Microsoft 37 41 30
Удаление узлов
Удалим первый узел xml-документа:
using System.Xml; XmlDocument xDoc = new XmlDocument(); xDoc.Load("people.xml"); XmlElement? xRoot = xDoc.DocumentElement; XmlNode? firstNode = xRoot?.FirstChild; if(firstNode is not null) xRoot?.RemoveChild(firstNode); xDoc.Save("people.xml");