Pracuję na dość dużych xmlach. W jednym punkcie przetwarzanie mam niesamowite spowolnienie:
XmlNode section = xml.SelectSingleNode("//section[body//div[@name='" + this.name + "']]");
if (section != null)
{
this.section_name = section.Attributes["name"].Value;
}
xml to XmlDocument.
Poprzednio kod ten wyglądał tak (był to błąd):
XmlNode section = xml.SelectSingleNode("//section[body/div[@name='" + this.name + "']]");
if (section != null)
{
this.section_name = section.Attributes["name"].Value;
}
I działał 100x szybciej.
Drobna zmiana w xpathie, spowolnienie do przeżycia.
Nie wiem czy to widać co to robi, chodzi w sumie o to, że mamy section'y, a sectionach mamy divy. Zarówno div i section ma body, w którym mogą być kolejne divy, coraz głębiej zagnieżdżone. Sectiony nigdy nie występują w divach.
To co chcemy uzyskać, to dla każdego diva w xml'u pobrać atrybut "name" z jego najbliższego rodzica o nazwie section.
W JS (MooTools) to napisałabym to prosto: this.section_name = this.div.Parent("section").Attributes("name");
Ale to nie JS :/
Czy macie jakieś sugestie, jak najszybciej odczytać wartość atrybutu pierwszego rodzica danego węzła? Bo mój sposób ewidentnie jest do bani ;)
Mogłabym niby zrobić pętlę po parentach i sprawdząć po kolei... ale czy to aby będzie szybciej...?