我正在尝试将类/对象转换为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();
我认为我需要以某种方式序列化对象,但我不确定如何做到这一点。
答案 0 :(得分:0)
不知道'元素'使问题更加困难。让我们说它是一个复杂的类型,其他属性可以作为' Name'和'价值'例如。
您缺少实例化新的实例化' XElement'我不确定你是否希望直接添加到根目录。 EG:
myDoc.Root.Add(element)
变为:
myDoc.Add(new XElement("My Element Name", new XAttribute("My Attribute", element.Name), element.Value));
我正在通过正确调用添加' XElement'来向xdoc添加元素。添加的元素名称为'我的元素名称'。我决定包含一个名为' My Attribute'的XAttribute。但是一个名字'从一种元素。然后包含的文字是' Value'来自元素。
恕我直言我不喜欢从XDocument创建XML。最好创建自己的复杂类型,然后使用&System.Sml.Serialization'制作自定义序列化程序。而不是将xml添加到xdocs的所有复杂规则。但这也取决于偏好和项目范围。
答案 1 :(得分:0)
可能的方法(效率未予考虑):
XElement
将字符串转换为XElement.Parse()
。XElement
。 在其中一个之后,您已准备好XElement
(s)插入现有的XDocument
。假设Recipient
类是只包含两个string类型属性的简单类,那么第二种方法在我看来更方便,例如:
XElement element =
new XElement("Recipient",
new XElement("Body_Type", rec.Body_Type),
new XElement("Email", rec.Email));
myDoc.Root.Add(element);