2012-01-20 5 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. 소문자로 매개 변수와 지역 변수의 이름을 시작하는 것이 좋습니다. 따라서 위의 값보다 idReplaceunionElement을 사용하십시오.

+0

조언 덕분에, 나는 이미 refactorying – mjsr

관련 문제