C# 使用XElement进行遍历的效率/性能
我正在研究一种使用xml解析数据的方法 给我的文件包含如下行:C# 使用XElement进行遍历的效率/性能,c#,xml,xml-parsing,C#,Xml,Xml Parsing,我正在研究一种使用xml解析数据的方法 给我的文件包含如下行: George | Washington | Carver 或者其他人可以寄给我这样的东西 Carver | Washington | George 等等 无论格式是什么,无论谁向我发送文件,都会向我发送有关如何解析文件的规则。在第一个示例中,它是名|中名|姓。在第二个例子中,它是姓|中名|名 我没有为每种可能性编写一个特例,而是创建了一个XML文件来描述元数据 <file> <first>0<
George | Washington | Carver
或者其他人可以寄给我这样的东西
Carver | Washington | George
等等
无论格式是什么,无论谁向我发送文件,都会向我发送有关如何解析文件的规则。在第一个示例中,它是名|中名|姓。在第二个例子中,它是姓|中名|名
我没有为每种可能性编写一个特例,而是创建了一个XML文件来描述元数据
<file>
<first>0</first>
<middle>1</middle>
<last>2</last>
</file>
然而,我对.NET的实现并不十分熟悉,这让我对一些东西产生了疑问
XElement
而不是创建字典会更好吗?我认为这不是一个好主意,因为我相信XElement
遍历可能涉及无序的树遍历,以获得我需要的内容。对每个属性(我有3个以上)执行此操作将非常低效。我只是在这里猜测词典
中检索是否为固定时间?我知道在JavaHashMap
中有常量get。如果c#也是这样,那么这似乎是一条更好的路线,因为我只需穿过一次,然后就能在恒定的时间内检索到我需要的任何东西字典
Dictionary
是一个哈希表,所以假设没有可怕的冲突,它有O(1)个查找来描述
,不过:
public static IDictionary<string, int> GetLookupTable(string xmlContents)
{
return XElement.Parse(xmlContents)
.Elements()
.ToDictionary(x => x.Name.LocalName,
x => (int) x);
}
publicstaticidictionary GetLookupTable(字符串xmlContents)
{
返回XElement.Parse(xmlContents)
.要素()
.ToDictionary(x=>x.Name.LocalName,
x=>(int)x);
}
(显然,这是将每个元素转换为int
而不是字符串,但如果您确实需要IDictionary
,则可以轻松地更改它)
public static IDictionary<string, int> GetLookupTable(string xmlContents)
{
return XElement.Parse(xmlContents)
.Elements()
.ToDictionary(x => x.Name.LocalName,
x => (int) x);
}