gpt4 book ai didi

c# - 在 .NET 应用程序中传递 XML 的最佳方式是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 18:50:08 26 4
gpt4 key购买 nike

我有以下带有 “页面”节点 的 XML 文件,我想在我的应用程序中将其读入 “PageItem”对象。我将大多数 XML 节点保存为 string/int/DataTime 属性,效果很好。

但是将“content”节点的 XML 子节点存储在 PageItem 对象的属性中的最佳方式是什么,以便我以后可以在应用程序中解析它?我应该将它存储为字符串,然后再将字符串作为 XML 读取,还是有更有效的方法将 XML 子节点存储为属性?

<?xml version="1.0" encoding="utf-8" ?>
<pages>
<page>
<id>1</id>
<whenCreated>2007-01-19T00:00:00</whenCreated>
<itemOwner>edward</itemOwner>
<publishStatus>published</publishStatus>
<correctionOfId>0</correctionOfId>
<idCode>contactData</idCode>
<menu>mainMenu</menu>
<title>Contact Data</title>
<description>This is contact data page.</description>
<accessGroups>loggedInUsers,loggedOutUsers</accessGroups>
<displayOrder>10</displayOrder>
<content>
<form idcode="customers" query="limit 5; category=internal"/>
<form idcode="customersDetail" query="limit 10; category=internal"/>
</content>
</page>
<page>
<id>2</id>
<whenCreated>2007-01-29T00:00:00</whenCreated>
<itemOwner>edward</itemOwner>
...

我将这个 XML 文件读入 PageItem 对象:

public class PageItem : Item
{
public string IdCode { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Menu { get; set; }
public string AccessGroups { get; set; }
public int DisplayOrder { get; set; }
public List<XmlNode> Content { get; set; } //PSEUDO-CODE

使用此代码:

var pageItems = from pageItem in xmlDoc.Descendants("page")
orderby (int)pageItem.Element("displayOrder")
select new Models.PageItem
{
Id = (int)pageItem.Element("id"),
WhenCreated = (DateTime)pageItem.Element("whenCreated"),
ItemOwner = pageItem.Element("itemOwner").Value,
PublishStatus = pageItem.Element("publishStatus").Value,
CorrectionOfId = (int)pageItem.Element("correctionOfId"),
IdCode = pageItem.Element("idCode").Value,
Menu = pageItem.Element("menu").Value,
Title = pageItem.Element("title").Value,
Description = pageItem.Element("description").Value,
AccessGroups = pageItem.Element("accessGroups").Value,
DisplayOrder = (int)pageItem.Element("displayOrder"),
Content = pageItem.Element("content").DescendantNodes() //PSEUDO-CODE
};

最佳答案

你试过 XmlSerializer 了吗?

            public string Serialize(PageItem obj)
{

XmlSerializer formatter = new XmlSerializer(typeof(PageItem));

MemoryStream ms = new MemoryStream();

formatter.Serialize(ms, obj);

ms.Position = 0;
StreamReader sr = new StreamReader(ms);

return sr.ReadToEnd();
}

public PageItem Deserialize(string serializedObject)
{

XmlSerializer formatter = new XmlSerializer(typeof(PageItem));

MemoryStream ms = serializedObject.ToMemoryStreamFromUTF8();

return ((PageItem)formatter.Deserialize(ms));
}

关于c# - 在 .NET 应用程序中传递 XML 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/949331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com