Я новичок в WPF и пытаюсь записать дочерний узел в файл XML. Вот файл ...
<?xml version = "1.0" encoding = "utf-8"?>
<Sequences>
<LastSavedSequence name = "Last Saved Sequence">
<Test name = "Measure Battery Current(Stim)" testNumber = "5" Vbat = "3.7" Frequency = "20" PulseWidth = "500" Amplitude = "1" Resistance = "1600" Anode = "1" Cathode = "2" ActiveDischarge = ""/>
<Test name = "Measure Batther Current(No Stim)" testNumber = "6" Vbat = "2.9" Frequency = "20" PulseWidth = "500" Amplitude = "1" Resistance = "1600" Anode = "1" Cathode = "2" ActiveDischarge = ""/>
</LastSavedSequence>
<ScottTestSequence name = "Scott Test Sequence">
<Test name = "VMO Status" testNumber = "4" Vbat = "3.7" Frequency = "20" PulseWidth = "1000" Amplitude = "6" Resistance = "3000" Anode = "1" Cathode = "2" ActiveDischarge = ""/>
<Test name = "Measure Battery Current(Stim)" testNumber = "5" Vbat = "3.7" Frequency = "20" PulseWidth = "500" Amplitude = "1" Resistance = "1600" Anode = "1" Cathode = "2" ActiveDischarge = ""/>
<Test name = "Measure Batther Current(No Stim)" testNumber = "6" Vbat = "2.9" Frequency = "20" PulseWidth = "500" Amplitude = "1" Resistance = "1600" Anode = "1" Cathode = "2" ActiveDischarge = ""/>
</ScottTestSequence>
</Sequences>
Я пытаюсь создать дочерний блок XML, чтобы войти внутрь. Я использовал stringBuilder, а затем пытаюсь прикрепить дочерний элемент, а затем .save. XMLData2 - это глобальный список, содержащий дочерние элементы, которые я получаю для каждого. Вот мой код ...
public static List<System.Xml.XmlNode> xmlData2 = new List<System.Xml.XmlNode>();
XmlDocument xmlFromOutSideSequenceFile = new XmlDocument();
xmlFromOutSideSequenceFile.Load("c:\\Users/StarkS02/Documents/SavedSequenceFile.xml");
StringBuilder exampleNode = new StringBuilder();
exampleNode.Append("<");
exampleNode.Append(tbSequenceName.Text.ToString().Replace(" ", ""));
exampleNode.Append(" name = ");
exampleNode.Append("'");
exampleNode.Append(tbSequenceName.Text);
exampleNode.Append("'");
exampleNode.Append(">");
foreach (XmlNode node in xmlData2)
{
XmlElement child = xmlFromOutSideSequenceFile.CreateElement(string.Empty, node.OuterXml, string.Empty);
exampleNode.Append("</");
exampleNode.Append(tbSequenceName.Text.ToString().Replace(" ", ""));
exampleNode.Append(">");
xmlFromOutSideSequenceFile.AppendChild(exampleNode);
xmlFromOutSideSequenceFile.Save("c:\\Users/StarkS02/Documents/SavedSequenceFile.xml");
Я получаю сообщение об ошибке компилятора в операторе .appendChild, что я не могу преобразовать stringBuilder в узел XML. В этом есть смысл, но я не знаю, как это исправить. Любые идеи?
Зачем преобразовывать строковый элемент в xml. Просто используйте StreamWriter для записи строки в файл. Методы Xml в сети ожидают только одного элемента в корне, который называется «хорошо сформированным». Когда у вас есть несколько элементов в корневом каталоге, у вас нет «Хорошо сформирован», и вы получите сообщение об ошибке. Так что просто используйте StreamWriter, который будет принимать любые данные и записывать их в файл.





Вы можете создать фрагмент XML и добавить его в документ.
var xmlFromOutSideSequenceFile = new XmlDocument();
xmlFromOutSideSequenceFile.Load("c:\\Users/StarkS02/Documents/SavedSequenceFile.xml");
Подробнее о DocumentFragment см. Здесь
var fragment = xmlFromOutSideSequenceFile.CreateDocumentFragment();
fragment.InnerXml = @"<somexml></somexml>";
xmlFromOutSideSequenceFile.DocumentElement.FirstChild.AppendChild(fragment);
Подробнее об XMLNode см. Здесь
https://msdn.microsoft.com/en-us/library/system.xml.xmlnode(v=vs.110).aspx
Решите, где вы хотите его поставить. .Первый ребенок .Последний ребенок .NextSibling .ParentNode .PreviousSibling
Надеюсь это поможет! Ваше здоровье!
Привет, @ScottS, если этот или какой-либо ответ помог решить ваш вопрос, пожалуйста, примите его, нажав галочку. Это показывает широкому сообществу, что вы нашли решение, и дает некоторую репутацию как автору, так и вам. Это не обязательно.
Теги используются здесь, чтобы найти вопросы, на которые мы можем ответить. Это вопрос .NET XML; это не имеет ничего общего с WPF. И тег «Сохранить» тут не причем; not body - эксперт в целом по «сохранению вещей» любым полезным здесь способом. Используйте только теги, которые привлекут внимание людей, осведомленных о вашей проблеме.