假设我需要使用 C# 在 XML 文件中查找特定节点。
<node attribute="my-target-attribute">
“my-target-attribute”是运行时的变量输入。
节点在 XML 文件中没有特定位置,我基本上只需要扫描整个 XML 层次结构,直到找到具有匹配属性的节点。
有什么方法可以预处理 XML 以便更快地找到节点?我需要保留原始 XML 结构。 XML 文件可能有 10,000 个节点。
最佳答案
您当然可以预处理 XML 以加快查找速度:
Dictionary<string, XmlElement> elementMap = new Dictionary<string, XmlElement>();
AddElementToMap(doc.DocumentElement, elementMap);
...
private void AddElementToMap(XmlElement elm, Dictionary<string, XmlElement> elementMap)
{
elementMap[elm.GetAttribute("attribute")] = elm;
foreach (XmlElement child in elm.SelectNodes("node"))
{
AddElementToMap(child, elementMap);
}
}
完成此操作后,查找很简单:
XmlElement elm = elementMap[value];
该代码假定文档中的每个元素都被命名为“节点”,每个元素都有一个名为“attribute”的属性,并且所有属性值都是唯一的。如果这些条件中的任何一个不为真,代码就会更加复杂,但并非特别如此。
关于c# - 在 XML 文件中查找节点 - C# 中的性能改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1760633/