检索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;
}
}
答案 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。以小写形式启动参数和局部变量的名称被认为是一种很好的约定。因此,请使用idReplace
和unionElement
而不是上述内容。