为什么添加这个新的XElement试图改变XML文档的结构?
本文关键字:改变 XML 文档 结构 XElement 添加 为什么 | 更新日期: 2023-09-27 18:11:28
有人说,有一只手表的人知道时间,而有两只手表的人则永远不知道时间。当谈到使用XML的选项时,我似乎有一个抽屉装满了它们。
不管怎样,我用的是。net 4。
我将原始代码替换为一个简化的测试编写函数,并将生成的XML字符串嵌入到注释中。
我试图在下面的示例XML中添加一个新的UserVar
节点。XML来自一个商业程序,我对它的设计没有任何投入。
当我尝试添加新条目时,我在xDoc.Save()
此操作将创建一个构造错误的文档。
理论上,我正在创建一个包含与原始结构匹配的子元素的XElement,并尝试将其添加到现有文档中。从其他问题和例子中可以看出别人正在做的事情。
我的代码在XML下面。该函数创建一个要添加到文档中的XElement。
XML<?xml version="1.0" encoding="UTF-8"?>
<Application>
<Vars>
<UserVars>
<UserVar>
<Name>"Quantity"</Name>
<Width>4</Width>
<VarValue>"1"</VarValue>
</UserVar>
<UserVar>
<Name>"Printers"</Name>
<Width>255</Width>
</UserVar>
<UserVar>
<Name>"Changed"</Name>
<Width>1</Width>
</UserVar>
<UserVar>
<Name>"Weight"</Name>
<VarValue>"450.1"</VarValue>
</UserVar>
</UserVars>
</Vars>
</Application>
代码public static void TestWriteData(string xmlDocNm)
{
// Write a test value to an Acme UserVar in the exisiting XML
var xDoc = XDocument.Load(xmlDocNm); //This is your xml path value
XElement xVar = new XElement("UserVar");
// In this company's XML the strings have double quotes around them
xVar.Add((new XElement("Name", "'"Title'"")));
xVar.Add(new XElement("VarValue", "'"Paradise Lost'""));
XElement xElement = new XElement("Application",
new XElement("Vars",
new XElement("UserVars",
xVar)));
// XML Data in xElement - String data copied from the IDE watch
//<Application>
// <Vars>
// <UserVars>
// <UserVar>
// <Name>"Title"</Name>
// <VarValue>"Paradise Lost"</VarValue>
// </UserVar>
// </UserVars>
// </Vars>
//</Application>
xDoc.Add(xElement);
xDoc.Save(xmlDocNm); //Write the XML back to the file
}
代码正在尝试添加第二个根元素。
修改行xDoc.Add(xElement);
to xDoc.Root.Element("Vars").Element("UserVars").Add(xElement);
但在此之前,删除创建<Application>
元素的代码。只需创建/输出<UserVar>
元素。