【发布时间】:2021-02-13 23:27:06
【问题描述】:
我有这个 xml 架构,我需要将子标签添加到:
<?xml version="1.0" encoding="utf-8"?>
<PFA>
<Entity id="123" action="add" date="04-Nov-2017"></Entity>
<Entity id="125" action="add" date="05-Nov-2017"></Entity>
</PFA>
预期的结果是:
<?xml version="1.0" encoding="utf-8"?>
<PFA>
<Record>
<Entity id="123" action="add" date="04-Nov-2017"></Entity>
<Entity id="125" action="add" date="05-Nov-2017"></Entity>
</Record>
</PFA>
我已尝试使用此代码:
var doc = XDocument.Load("data.xml");
var record = new XElement("Record");
doc.Element("PFA").Add(record);
doc.Save("data.xml");
但我的结果如下。它有结束标签,但缺少开始标签。
<?xml version="1.0" encoding="utf-8"?>
<PFA>
<Entity id="123" action="add" date="04-Nov-2017">
</Entity>
</Record>
</PFA>
更新:
我用Elements尝试了这个解决方案:
var doc = XDocument.Load(file.FullName);
var record = new XElement("Record");
var pfa = doc.Element("PFA");
var entities = pfa.Elements("Entity");
entities.Remove(); // remove <Entity> from <PFA>
pfa.Add(record); // add <Record> to <PFA>
record.Add(entities); // add <Entity> to <Record>
doc.Save(file.FullName);
但仍然缺少开始记录标签,
输出变为:
<?xml version="1.0" encoding="utf-8"?>
<PFA>
<Record />
</PFA>
如果我使用Element:
var doc = XDocument.Load(file.FullName);
var record = new XElement("Record");
var pfa = doc.Element("PFA");
var entities = pfa.Element("Entity");
entities.Remove(); // remove <Entity> from <PFA>
pfa.Add(record); // add <Record> to <PFA>
record.Add(entities); // add <Entity> to <Record>
doc.Save(file.FullName);
输出变成:
<?xml version="1.0" encoding="utf-8"?>
<PFA>
<Entity id="123" action="add" date="04-Nov-2017"></Entity></Record>
<Record><Entity id="123" action="add" date="04-Nov-2017"></Entity></Record>
<Record><Entity id="125" action="add" date="05-Nov-2017"></Entity></Record>
</PFA>
【问题讨论】:
-
您发布的代码不会创建这个无效的 XML。相反,它会创建一个有效的
<Record />标签。你确定那是你当前得到的 XML 吗?