gpt4 book ai didi

c# - 读取 xml 的更好方法

转载 作者:行者123 更新时间:2023-11-30 22:37:10 29 4
gpt4 key购买 nike

我有xml文件

<root>
<child_1>
<sub_child attr1="text" attr2="text" />
<sub_child attr1="text" attr2="text" />
<sub_child attr1="text" attr2="text" />
</child_1>
<child_2>
<sub_child attr1="text" attr2="text" />
<sub_child attr1="text" attr2="text" />
<sub_child attr1="text" attr2="text" />
</child_2>
<child_3>
<sub_child_1 attr1="text" attr2="text" />
<sub_child_2 attr1="text" attr2="text" />
</child_3>
...

我想读取类的 sub_child 属性

class SubChild {
string a1;
string a2;
}

我需要 child_1 和 child_2 的两个 SubChild 对象列表以及 sub_child_1 和 sub_child_2 的两个 SubChild 对象

现在我使用 linq to xml,我的代码是

// List<SubChild> 
var child_1 = from s in doc.Descendants("sub_child").Where(x => x.Parent.Name == "child_1")
select new SubChild {
a1 = s.Attribute("attr1").Value,
a2 = s.Attribute("attr2").Value,
};

// List<SubChild>
var child_2 = from s in doc.Descendants("sub_child").Where(x => x.Parent.Name == "child_2")
select new SubChild {
a1 = s.Attribute("attr1").Value,
a2 = s.Attribute("attr2").Value,
};

// SubChild
var sub_1 = (from s in doc.Descendants("sub_child_1")
select new SubChild {
a1 = s.Attribute("attr1").Value,
a2 = s.Attribute("attr2").Value,
}).First();

// SubChild
var sub_2 = (from s in doc.Descendants("sub_child_2")
select new SubChild {
a1 = s.Attribute("attr1").Value,
a2 = s.Attribute("attr2").Value,
}).First();

但它看起来很难看,我想问一下有没有更清晰的方法来做到这一点?

最佳答案

您可以使用 .Element().Elements() 指定“路径”,消除 where lambda。

 // untested
var child_1 = from s in doc.Root.Element("child_1").Elements("sub_child")
select new SubChild {
a1 = s.Attribute("attr1").Value,
a2 = s.Attribute("attr2").Value,
};

关于c# - 读取 xml 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6621388/

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