C # WPF Невозможно записать в файл XML - PullRequest
0 голосов
/ 05 мая 2018

Я новичок в 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. Это имеет смысл, но я не уверен, как это исправить. Есть идеи?

1 Ответ

0 голосов
/ 05 мая 2018

Вы можете создать фрагмент XML и добавить к документу.

var xmlFromOutSideSequenceFile = new XmlDocument();
xmlFromOutSideSequenceFile.Load("c:\\Users/StarkS02/Documents/SavedSequenceFile.xml");

Подробнее об DocumentFragment см. Здесь

https://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createdocumentfragment(v=vs.110).aspx

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

Надеюсь, это поможет! Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...