我有以下XML文件:
<?xml-stylesheet type="text/xsl" href="transform.xslt"?>
<Root>
<Notes>
<Note>
<date>1997-07-04T00:00:00</date>
</Note>
<Note>
<date>1997-07-04T00:00:00</date>
</Note>
</Notes>
</Root>
不,我想像下面的代码一样向这个XML添加元素:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="transform.xslt"?>
<Root>
<Notes>
<notedate date="date here"><Note>
<date>1997-07-04T00:00:00</date>
</Note></notedate>
<notedate date="date here"><Note>
<date>1997-07-04T00:00:00</date>
</Note></notedate>
</Notes>
</Root>
如您所见,我想将<Note>
封装在<notedate>
- 元素内。
如何在C#中指定将新元素(包括开始和结束标记)添加到XML文件的位置?
我正在使用XDocument。
答案 0 :(得分:0)
这里演示了一个简单的案例:link
以下是代码段:
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</book>");
XmlNode root = doc.DocumentElement;
//Create a new node.
XmlElement elem = doc.CreateElement("price");
elem.InnerText="19.95";
//Add the node to the document.
root.AppendChild(elem);
Console.WriteLine("Display the modified XML...");
doc.Save(Console.Out);
答案 1 :(得分:0)
您实际上希望将每个Note
元素与另一个元素包装在一起,一个选项是使用ReplaceWith
:
var noteElements = doc.Root.Descendants("Note").ToList();
foreach(XElement noteEl in noteElements)
{
string noteDateValue = noteEl.Element("date").Value;
noteEl.ReplaceWith(new XElement("notedate", noteEl, new XAttribute("date", noteDateValue)));
}
// your doc is now updated