Добавление данных в XML-файл
Я работал над xml-структурой, и у меня возникли проблемы с добавлением к определенной части XML-файла, и мне нужна помощь. Моя цель - добавить новую категорию под узлом категории. ниже приведен мой текущий код.
$Path = "C:\Users\shuppz\Desktop\XML\Helpbox.xml" $xmlDoc = [System.Xml.XmlDocument](Get-Content $Path) #Create New Category $newCat = $xmlDoc.AdminLauncher.Categories.AppendChild($xmlDoc.CreateElement("Category")) #Set Attributes $newCat.SetAttribute("Selected", "False") $newCat.SetAttribute("Name", $Name) #Save File $xmlDoc.Save($Path)
Мой XML-файл:
<?xml version="1.0"?> <!--XML For Admin Launcher--> <AdminLauncher> <Categories /> <Task Name="GPMC" Category="Tools"> <Path>C:\Windows</Path> <Arg>/offerra</Arg> </Task> </AdminLauncher>
Когда я запускаю его я получаю следующие ошибки:
Method invocation failed because [System.String] doesn't contain a method named 'AppendChild'. At C:\Users\shuppz\AppData\Local\Temp\5564e900-f0cf-4878-8c39-9fc3aff6ed8e.ps1:6 char:55 + $newCat = $xmlDoc.AdminLauncher.Categories.AppendChild <<<< ($xmlDoc.CreateElement("Category")) + CategoryInfo : InvalidOperation: (AppendChild:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound You cannot call a method on a null-valued expression. At C:\Users\shuppz\AppData\Local\Temp\5564e900-f0cf-4878-8c39-9fc3aff6ed8e.ps1:9 char:21 + $newCat.SetAttribute <<<< ("Selected", "False") + CategoryInfo : InvalidOperation: (SetAttribute:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull You cannot call a method on a null-valued expression. At C:\Users\shuppz\AppData\Local\Temp\5564e900-f0cf-4878-8c39-9fc3aff6ed8e.ps1:10 char:21 + $newCat.SetAttribute <<<< ("Name", $Name) + CategoryInfo : InvalidOperation: (SetAttribute:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
Zoltán Zörgő
Не могли бы вы опубликовать пример XML-файла?
RedDk
Быстрая проверка с помощью VisualStudio 2010 "Object Browser" -> System.Xml.XmlDocument не дает никаких подсказок. Проверка -> Система.Строка также не дает никаких подсказок. Откуда взялся этот сценарий?
RedDk
Кроме того, есть System.XMLNode и System.XMLPAttribute, у которых есть метод "AppendChild", как вы говорите.
Sergey Alexandrovich Kryukov
Если вы действительно хотите добавить к XML, а не вставить что-то, это невозможно в принципе. Это также дало бы файл, который не является хорошо сформированным XML. Дело в том, что просто ваша формулировка в названии вопроса неверна. Вам нужно добавить ребенка.
—СА