【问题标题】:C# WPF Unable to write to XML fileC# WPF 无法写入 XML 文件
【发布时间】:2018-05-04 21:53:52
【问题描述】:

我是 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 节点。这是有道理的,但我不知道如何解决它。有任何想法吗?

【问题讨论】:

  • 这里使用标签来查找我们可以回答的问题。这是一个 .NET XML 问题;它与WPF无关。而且“保存”标签也没有太大关系; not body 是“保存东西”方面的一般专家,在这里有用。请仅使用能够吸引了解您遇到的问题的人注意的标签。
  • 为什么要将字符串元素转换为xml。只需使用 StreamWriter 将字符串写入文件。网络中的 Xml 方法只期望根中的单个元素被称为“格式良好”。当您在根目录中有多个元素时,您没有“格式良好”并且会出现错误。所以只需使用 StreamWriter 它将获取任何数据并写入文件。

标签: c# xml xmldocument


【解决方案1】:

您可以创建一个 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

希望这会有所帮助!干杯!

【讨论】:

  • 嗨@ScottS,如果这个或任何答案已经解决了您的问题,请考虑通过单击复选标记接受它。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
猜你喜欢
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多