gpt4 book ai didi

c# - LINQ XML 将不同的层次结构读入 1 个对象

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:54 24 4
gpt4 key购买 nike

我有一个 XML 文件

<searchResponse requestID=“500” status=“success”>
<pso>
<psoID ID=“770e8400-e29b-41d4-a716-446655448549”
targetID=“mezeoAccount”/>
<data>
<email>user2@example.net</email>
<quotaMeg>100</quotaMeg>
<quotaUsed>23</quotaUsed>
<realm>Mezeo</realm>
<path>/san1/</path>
<billing>user2</billing>
<active>true</active>
<unlocked>true</unlocked>
<allowPublic>true</allowPublic>
<bandwidthQuota>1000000000</bandwidthQuota>
<billingDay>1</billingDay>
</data>
</pso>
</searchRequest>

我想将数据提取到单个业务对象中。我该走了吗

MezeoAccount mcspAccount = new MezeoAccount();
mcspAccount.PsoID = doc.Element("psoID").Attribute("ID").Value;
mcspAccount.Email = doc.Element("email").Value;
...

还是构建一个列表,即使我知道文件中只有 1 条记录?

var psoQuery = from pso in doc.Descendants("data")
select new MezeoAccount {
PsoID = pso.Parent.Element("psoID").Attribute("ID").Value,
Email = pso.Element("email").Value,
... };

如果我遗漏了什么,人们会建议什么是更正确的方法,甚至是更好的方法。

最佳答案

如果您知道您的 xml 仅包含一个数据记录,那么您不应该为它创建一个列表。所以你的第一个例子看起来不错。

我个人使用的模式是这样的:

public class MezeoAccount 
{
public string PsoID { get; set; }
public string Email { get; set; }

public static MezeoAccount CreateFromXml(XmlDocument xml)
{
return new MezeoAccount()
{
PsoID = xml.Element("psoID").Attribute("ID").Value,
Email = doc.Element("email").Value;
};
}
}

//Usage
var mezeoAccount = MezeoAccount.CreateFromXml(xml);

关于c# - LINQ XML 将不同的层次结构读入 1 个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2187911/

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