在现有文档中填充XML元素
本文关键字:填充 XML 元素 文档 | 更新日期: 2023-09-27 18:02:37
我在文档中有这个XML元素字符串
<dmc><avee><modelic></modelic><sdc></sdc><chapnum></chapnum><section></section>
<subsect></subsect><subject></subject><discode></discode><discodev></discodev>
<incode></incode><incodev></incodev><itemloc></itemloc></avee></dmc>
我现在需要做的是使用Linq用用户输入的变量填充这些元素。我现在有:
XDocument doc = XDocument.Load(sgmlReader);
doc.Element("modelic").Add(MI);
doc.Element("sdc").Add(sd);
doc.Element("chapnum").Add(sys);
doc.Element("section").Add(subsys);
doc.Element("subsect").Add(subsubsys);
doc.Element("subject").Add(unit);
doc.Element("discode").Add(dc);
doc.Element("discodev").Add(dcv);
doc.Element("incode").Add(infcode);
doc.Element("incodev").Add(infCV);
doc.Element("itemloc").Add(loc);
(是的,我正在使用sgmlReader,但这在我的程序中在其他领域工作得很好)我显然错过了一些基本的东西,因为它给了我一个NullReferenceException was unhandled - Object reference not set to an instance of an object
。
Element()方法只匹配容器的直接子元素。
你可以把Descendants()串成First():
doc.Descendants("modelic").First().Add(MI);
或者导航到要修改的元素的直接父元素:
doc.Root.Element("avee").Element("modelic").Add(MI);
应该可以:
var avee = dmc.Root.Element("avee");
avee.Element("modelic").Value = MI;
avee.Element("sdc").Value = sd;
只需为每个剩余元素(chapnum
, section
…)重复最后一行。
问题是,首先您必须检索根元素(dmc
),然后是avee
,然后您可以为avee
的子元素设置值。