按ID检索Xml节点的最快方法是什么

时间:2012-01-20 21:19:14

标签: c# search tree xmlnode

检索XML节点的最快方法是什么?我有一个应用程序,需要替换特定节点的功能,当文档很小但很快变大,然后需要几秒钟才能进行更换。这是方法,我只是做一个暴力比较,在那种情况下糟透了。

public bool ReplaceWithAppendFile(string IDReplace)
{
    XElement UnionElement = (from sons in m_ExtractionXmlFile.Root.DescendantsAndSelf()
                             where sons.Attribute("ID").Value == IDReplace
                             select sons).Single();
    UnionElement.ReplaceWith(m_AppendXmlFile.Root.Elements());
    m_ExtractionXmlFile.Root.Attribute("MaxID").Value =
        AppendRoot.Attribute("MaxID").Value;
    if (Validate(m_ExtractionXmlFile, ErrorInfo))
    {
        m_ExtractionXmlFile.Save(SharedViewModel.ExtractionFile);
        return true;
    }
    else
    {
        m_ExtractionXmlFile = XDocument.Load(SharedViewModel.ExtractionFile);
        return false;
    }
}

1 个答案:

答案 0 :(得分:2)

尝试使用XPath:

string xPath = string.Format("//*[@id='{0}']", IDReplace);
XElement UnionElement = m_ExtractionXmlFile.XPathSelectElement(xPath);

您可以参考Finding Elements by Attributes in a DOM Document Using XPath了解更多示例。

P.S。以小写形式启动参数和局部变量的名称被认为是一种很好的约定。因此,请使用idReplaceunionElement而不是上述内容。