我正在尝试将类/对象转换为XElement,并将其插入到从基于磁盘的模板加载的XDocument中。
Recipient rec = new Recipient();
rec.Body_Type = "HTML";
rec.Email = "Testaddress@gmail.com";
XDocument myDoc =XDocument.Load("../../MasterTemplate.xml");
//serialize Recipient to element and add it
myDoc.Root.Add(element);
this.richTextBox1.Text = myDoc.ToString();
我假设我需要以某种方式序列化对象,但我不确定具体如何做到这一点。
发布于 2014-08-13 17:36:15
可能的办法(没有考虑到效率):
XElement
将字符串转换为XElement.Parse()
。XElement
。在其中一个之后,您可以将XElement
插入到现有的XDocument
中。假设Recipient
类是只包含两个string类型属性的简单类,那么在我看来,第二个方法更方便,例如:
XElement element =
new XElement("Recipient",
new XElement("Body_Type", rec.Body_Type),
new XElement("Email", rec.Email));
myDoc.Root.Add(element);
发布于 2014-08-13 14:19:34
不知道什么“元素”会使问题变得更加困难。比方说,它是一个复杂的类型,具有其他属性,例如可以公开为'Name‘和'Value’的字符串。
您缺少实例化一个新的实例化'XElement‘,我不确定您是否希望直接添加到根。例:
myDoc.Root.Add(element)
变成:
myDoc.Add(new XElement("My Element Name", new XAttribute("My Attribute", element.Name), element.Value));
因此,通过正确调用“XElement”的添加,我向xdoc添加了一个元素。添加的元素的名称为“我的元素名”。我决定包含一个名为“My”的XAttribute,但是包含一个来自某一类型元素的“名称”。然后,所包含的文本是元素中的“值”。
我不喜欢从XDocument创建XML。与将xml添加到xdocs的所有复杂规则相比,创建自己的复杂类型并使用“System.Xml.Serialization”进行自定义序列化要好得多。但这也取决于偏好和项目范围。
https://stackoverflow.com/questions/25294285
复制相似问题