我需要在xml树的特定部分添加一个新元素,但我无法使其工作。
这是我的xml输入
<structMap LABEL="Logical Structure" TYPE="LOGICAL">
<div ID="DIVL1" TYPE="CONTENT">
<div ID="DIVL2" TYPE="" DMDID="MODSMD_ARTICLE1" LABEL="">
<div ID="DIVL3">
<div ID="DIVL31" TYPE="TITLE" />
</div>
</div>
</div>
</structMap>
这是我想要的输出
<structMap LABEL="Logical Structure" TYPE="LOGICAL">
<div ID="DIVL1" TYPE="CONTENT">
<div ID="DIVL2" TYPE="" DMDID="MODSMD_ARTICLE1" LABEL="">
<div ID="DIVL3">
<div ID="DIVL31" TYPE="TITLE">
<fptr>
<area BETYPE="IDREF" FILEID="ALTO0011" BEGIN="P11_TB3"/>
</fptr>
</div>
</div>
</div>
</div>
</structMap>
这是我的代码
var b = dc.Descendants().Attributes("TYPE").Where(ee => ee.Value == "TITLE").First();
我没有b.AddFist。我怎样才能使它发挥作用?
答案 0 :(得分:1)
Usse xml linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
XElement title = doc
.Descendants("div")
.Where(x => (string)x.Attribute("TYPE") == "TITLE")
.FirstOrDefault();
title.Add(new XElement("fptr", new object[] {
new XElement("area", new object[] {
new XAttribute("BETYPE","IDREF"),
new XAttribute("FILEID","ALTO0011"),
new XAttribute("BEGIN","P11_TB3")
})
}));
}
}
}
答案 1 :(得分:1)
当然,假设您正在使用LINQ to XML,那么您不会b.AddFirst()
就不足为奇了。 b
是XAttribute,而不是XElement。
看起来你正在寻找b.Parent.AddFirst()
。