我有一个像这样的 XML 文件:
<Something>....</Something>
<Another>....</Another>
<Other>...</Other>
该 XML 文件没有根元素(我知道这是错误的 XML 格式)。
我需要创建或替换(如果已经存在)此 XML 中的节点,但我无法使用XDocument
or XmlDocument
因为它们需要根元素才能工作,而我无法将根元素添加到此 XML,因为我无法更改应用程序(Windows 窗体应用程序)中的更多代码。
我有什么选择来执行此操作?
编辑1:
使用 @chridam 的示例,我有这个方法,但它替换了整个 XML。我需要改变什么?
public void ReEscribirNodoXML(string pathXml, string nodoName, string nodeContent)
{
if (File.Exists(pathXml))
{
XmlValidatingReader vr = new XmlValidatingReader(pathXml, XmlNodeType.Element, null);
while (vr.Read())
{
Debug.WriteLine("NodeType: {0} NodeName: {1}", vr.NodeType, vr.Name);
}
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = true;
settings.NewLineOnAttributes = true;
var writer = XmlWriter.Create(pathXml, settings);
writer.WriteStartElement(nodoName);
writer.WriteRaw(nodeContent);
writer.WriteEndElement();
writer.Flush();
}
else
{
throw new Exception("I#Error");
}
}
只需提供一个可使用的框架即可使用 Xdocument,然后完成后丢弃该框架.
这是进入的片段、所做的更改、添加的新节点以及退出的片段:
var fragment = @"<Something>abc</Something>
<Another>def</Another>
<Other>ghi</Other>";
var xDoc = XDocument.Parse("<TempRoot>" + fragment + "</TempRoot>");
xDoc.Descendants("Another").First().Value = "Jabberwocky";
xDoc.Root.Add(new XElement("Omega", "Man"));
var fragOut =
string.Join(Environment.NewLine, xDoc.Root
.Elements()
.Select (ele => ele.ToString()));
Console.WriteLine (fragOut);
/* Prints out
<Something>abc</Something>
<Another>Jabberwocky</Another>
<Other>ghi</Other>
<Omega>Man</Omega>
*/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)