我在dotnet / c#中读取XmlDocument,通过使用System.Xml,我喜欢通过More属性读取xmlElement到less属性,如何读取?我们可以这样做吗?
我的示例xml文件和编码:
<conditions><condition if:size="10pt" if:name="courier"/>
<condition if:size="10pt"/>
<condition if:size="10pt" if:name="times" ifnot:emphasis="bold"/></conditions>
foreach (XmlElement CondNode in XmlDoc.SelectNodes("//condition"))
{
//how to read and sort(not by length) by no. of attribute
}
我希望阅读以下订单:
<condition if:size="10pt" if:name="times" ifnot:emphasis="bold"/>
<condition if:size="10pt" if:name="courier"/>
<condition if:size="10pt"/>
提前致谢,
萨兰
答案 0 :(得分:0)
使用Linq to XML
XDocument doc = XDocument.Parse(xml);
var sorted = doc.Descendants("condition").OrderByDescending(node => node.Attributes().Count());
foreach (XElement condition in sorted)
{
// Do whatever you need
}
答案 1 :(得分:0)
如果要继续使用XmlDocument,可以按如下方式对节点进行排序:
var nodes = doc.SelectNodes("//condition")
.OfType<XmlElement>()
.OrderByDescending(x => x.Attributes.Count);
foreach (XmlElement CondNode in nodes)
{
//how to read and sort(not by length) by no. of attribute
}
通过使用OfType<T>
,您可以从集合中检索所有XmlElements(这应包含集合中的所有节点)并作为结果接收IEnumerable<XmlElement>
。您可以将此作为Linq查询的起点。 XmlNodeList仅实现IEnumerable
的非泛型版本,因此您无法对其运行Linq查询,因为大多数方法都是IEnumerable<T>
的扩展方法。