2012-01-20 21 views
2

XMLノードを取得する最も速い方法は何ですか?私は、特定のノードを置き換える機能が必要なアプリケーションを持っています。ドキュメントが小さい場合は速くなりますが、すぐに大きくなったらすぐに置き換えを行うには数秒かかります。これは方法です、私はちょうどそのシナリオで本当に悪い吸うブルートフォースの比較を行います。IDで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

XPathを見ることができます。このような目的でよく使用されます。 –

答えて

2

XPathを使用してみてください:あなたはより多くの例についてはFinding Elements by Attributes in a DOM Document Using XPathを参照してもよい

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

P.S.パラメータの名前とローカル変数を小文字で始めるのが良い慣習であると考えられます。したがって、上記よりもidReplaceunionElementを使用してください。

+0

アドバイスをいただきありがとうございます、私はすでにリファクタリングしています – mjsr

関連する問題