我正在改变在我的应用程序中序列化数据的方法。到目前为止,我手动完成了所有操作,创建了大量代码,但也给了我很大的灵活性。
现在我正在使用XmlSerializer
,并创建了一个DataTransferModel,以便以我想要的方式提供数据。
现在唯一能阻挡我的方法是我需要有一个围绕XML-Content的包装器。它只是包含应用程序名称的其他标记。如何在应用程序内创建的XML-Documents周围添加此标记?
谢谢,如果您需要更多信息,请不要犹豫不决。
编辑:标签应该是文档中的第一个标签。
答案 0 :(得分:1)
通过向对象模型添加另一个图层来添加包装元素; XmlSerializer
通常是对象的镜像。所以;如果你想要一个根<MyApp>
元素,那么添加:
[XmlRoot("MyApp")]
public class SomeWrapper {
public YourExistingModel SomeName {get;set;}
}
并序列化SomeWrapper
而不是YourExistingModel
。
答案 1 :(得分:1)
所以,我使用自定义方法解决了这个问题,该方法可以根据需要更改XmlDocument
。
我基本上创建了一个&#34;准备&#34; XmlDocument
,在原始标签周围添加包装标签。在我必须使用XmlDocument
之前,每次都可以调用此方法。
/// <summary>
/// Prepares the document to export it.
/// Adds the Wrapper tags
/// </summary>
/// <param name="contentDocument">The Document to prepare.</param>
/// <returns>Returns the prepared document.</returns>
private static XmlDocument PrepareExportDocument(XmlDocument contentDocument)
{
XmlDocument returnDoc = new XmlDocument();
XmlNode rootElement = returnDoc.CreateElement("Wrapper-Tag");
XmlNode importedNode = returnDoc.ImportNode(contentDocument.DocumentElement, true);
rootElement.AppendChild(importedNode);
returnDoc.AppendChild(rootElement);
return returnDoc;
}
如果您有更好的方法,或者您觉得这种方法不正确,请随意发表评论或添加您自己的答案。现在我将这个答案标记为已接受。