рдкреНрд░рджрд░реНрд╢рди: LINQ to XML рдмрдирд╛рдо XmlDocument рдмрдирд╛рдо XmlReader рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдкрд░

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдореБрдЭреЗ xml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛ред рд╕рдм рдХреБрдЫ рдмреБрд░рд╛ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЬрдм рдлрд╝рд╛рдЗрд▓ рдореЗрдВ ~ 100,000 рд░рд┐рдХреЙрд░реНрдб рдереЗ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдкрдврд╝рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрд╛ред рдФрд░ рдореИрдВрдиреЗ .net рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ xml рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдХрдЯ рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдгред


рдЙрдкрдХрд░рдг


рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрддрд╛рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд┐рдП рдЧрдП рдереЗред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╣реЛрдо рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╢реНрд░реЗрдгреА рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП:

рдПрдЪрдЯреАрд╕реА 7 рдореЛрдЬрд╛рд░реНрдЯ рдкрд░ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдкрд░ рдЯреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдПред

рдЯреЗрд╕реНрдЯ рдХреА рддреИрдпрд╛рд░реА


рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ xml рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реБрдП рдереЗ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рднрд┐рдиреНрди рдереА рдФрд░ рдХреНрд░рдорд╢рдГ: 1, 10, 100, 1,000, 100,000 рдЯреБрдХрдбрд╝реЗред рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
<? xml version ="1.0" ? >
< items >
< item id ="433382426" />
< item id ="1215581841" />
< item id ="2085749980" />
........
< item id ="363608924" />
</ items >


* This source code was highlighted with Source Code Highlighter .

рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг 100 рдмрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдФрд╕рддрди рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦрд╛рд▓реА рдкреНрд░реЛрд╕реЗрд╕рдЖрдИрдбреА (рдЖрдИрдбреА) рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред

XmlDocument.Load


рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЕрдВрдд рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗ, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдЪреНрдЪ рд▓рд╛рдЧрдд рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ (рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХреНрд╕рдкреАрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП, рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВ)ред рд╡рд┐рдзрд┐ рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
private static void XmlDocumentReader( string filename)
{
var doc = new XmlDocument ();
doc.Load(filename);
XmlNodeList nodes = doc.SelectNodes( "//item" );
if (nodes == null )
throw new ApplicationException( "invalid data" );

foreach ( XmlNode node in nodes)
{
string id = node.Attributes[ "id" ].Value;
ProcessId(id);
}
}

* This source code was highlighted with Source Code Highlighter .


LINQ to XML


Linq-to-XML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реАрдзрд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
private static void XDocumentReader( string filename)
{
XDocument doc = XDocument .Load(filename);
if (doc == null || doc.Root == null )
throw new ApplicationException( "invalid data" );

foreach ( XElement child in doc.Root.Elements( "item" ))
{
XAttribute attr = child. Attribute ( "id" );
if (attr == null )
throw new ApplicationException( "invalid data" );

string id = attr.Value;
ProcessId(id);
}
}

* This source code was highlighted with Source Code Highlighter .


XmlReader


рдФрд░ рдЕрдВрдд рдореЗрдВ, XML рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХрд╛ рдЕрдВрддрд┐рдо рддрд░реАрдХрд╛ XmlTextReader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХрд╣рдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╕рдордЭрдирд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣реИред Xml-file рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрдк рдЗрд╕реЗ рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ (рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд┐рдирд╛) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рд░ рдмрд╛рд░ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рддрджрдиреБрд╕рд╛рд░, рд╡рд┐рдзрд┐ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
private static void XmlReaderReader( string filename)
{
using ( var reader = new XmlTextReader (filename))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType .Element)
{
if (reader.Name == "item" )
{
reader.MoveToAttribute( "id" );
string id = reader.Value;
ProcessId(id);
}
}
}
}
}

* This source code was highlighted with Source Code Highlighter .

* рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рддрд░реАрдХреЛрдВ рдореЗрдВ рдЬрд╛рдВрдЪ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо


рдиреАрдЪреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдордп рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рдФрд╕рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдордпред
110100100010000100000
XmlDocument0.59 рдорд┐0.5 рдорд┐0.67 рдорд┐2.49 рдПрдордПрд╕21.73 рдорд┐398.91 рдорд┐
XmlReader0.51 рдорд┐0.47 рдорд┐0.55 рдорд┐1.31 рдорд┐8.62 рдорд┐79.65 рдПрдордПрд╕
Linq to XML0.57 рдорд┐0.59 рдорд┐0.64 рдПрдордПрд╕2.09 рдорд┐15.6 рдорд┐192.66 рдорд┐



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЯреЗрдмрд▓ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, XmlReader, рдЬрдм рдмрдбрд╝реА xml рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ 2.42 рдЧреБрдирд╛ рдмреЗрд╣рддрд░ Linq To XML рдкреНрд░рджрд░реНрд╢рди рдЬреАрддрддрд╛ рд╣реИ, рдФрд░ XmlDocument 5 рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░!

рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдкрд░ рдкрд░реАрдХреНрд╖рдг


рдЕрдм рдлреЛрди рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ .Net рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдПрдХ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП XmlDocument.oad рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдФрд░ XmlReader рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛:
private static void XmlReaderReader( string filename)
{
using ( var reader = XmlReader.Create(filename)) {
while (reader.Read()) {
if (reader.NodeType == XmlNodeType .Element) {
if (reader.Name == "item" ) {
reader.MoveToAttribute( "id" );
string id = reader.Value;
ProcessId(id);
}
}
}
}
}

* This source code was highlighted with Source Code Highlighter .


рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо


рдЬрд╛рд╣рд┐рд░ рд╣реИ, XmlReader рдлреЛрди рдкрд░ рддреЗрдЬ рд╣реЛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЕрдВрддрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реИред XmlReader рдлреЛрди рдкрд░, рдпрд╣ LINQ рд╕реЗ XML рддрдХ 1.91 рдЧреБрдирд╛ рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ 2.42 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред
110100100010000100000
XmlReader1.67 рдорд┐1.74 рдорд┐3.19 рдорд┐19.5 рдорд┐173.84 рдПрдордПрд╕1736.18 рдПрдордПрд╕
Linq to XML1.73 рдорд┐2.21 рдорд┐4.75 рдорд┐31.39 рдорд┐314.39 рдорд┐3315.13 рдорд┐


рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдкрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ 100 рддрддреНрд╡реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдореЗрдВ рдЕрдВрддрд░ред


рдбреЗрд╕реНрдХрдЯреЙрдк рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдкрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ 100,000 рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐ рдореЗрдВ рдЕрдВрддрд░ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлреЛрди рдФрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреА рдЧрддрд┐, рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЧреИрд░-рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИред рдпрд╣ рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рд╕рдордЭрд╛рдпрд╛, рдПрдХреНрд╕рдПрдордПрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЙрддреНрдкрд╛рджрдХ рддрд░реАрдХрд╛ рд╣реИ, рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдПрдХреНрд╕рдПрдордПрд▓рдЖрд░рдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрд╕реБрд╡рд┐рдзрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЬрдЯрд┐рд▓ рддрд░реАрдХрд╛ рд╣реИ - рд╣рд░ рдмрд╛рд░ рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реВрдЪрдХ рдХрд┐рд╕ рддрддреНрд╡ рдкрд░ рд╣реИред

рдпрджрд┐ рдкреНрд░рджрд░реНрд╢рди рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░рд╢рд┐рд▓рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рд╕реНрдкрд╖реНрдЯрддрд╛ рдФрд░ рдХреЛрдб рд░рдЦрд░рдЦрд╛рд╡ рдХреА рд╕рд╛рджрдЧреА рд╣реИ, рддреЛ LINQ to XML рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЦрд░рд╛рдм рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдХрд╛рд░рдг рдХрд╛рд░реНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ XmlDocument.Load рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

PS рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдиреЗ рдореБрдЭреЗ рдпрд╣ рд╕рдм рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред

рдЕрджреНрдпрддрди: рд╕реБрдЭрд╛рд╡ рдкрд░, alex_rus рдиреЗ XPath рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ XmlDocument рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдо рдмреЗрд╣рддрд░ рдереЗ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рддрд░реАрдХрд╛ рд╕рдмрд╕реЗ рдзреАрдорд╛ рд░рд╣рд╛ред

рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдЦреНрдпрд╛ 3. рдПрдХреНрд╕рдкреАрдбрдЬрд╛рдЗрдирдореЗрдВрдЯ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдПрдХреНрд╕рдкреАрде рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ред
110100100010000100000
XmlDocument (c XPath)0.59 рдорд┐0.5 рдорд┐0.67 рдорд┐2.49 рдПрдордПрд╕21.73 рдорд┐398.91 рдорд┐
XmlDocument (XPath рдХреЗ рдмрд┐рдирд╛)0.56 рдорд┐0.5 рдорд┐0.65 рдорд┐2.24 рдорд┐19.47 рдорд┐362.75 рдПрдордПрд╕


рдЬреИрд╕рд╛ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ (рдФрд░ рдЖрдВрдХрдбрд╝рд╛) рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗрд╡рд▓ 10% рдмрдврд╝реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реБрдЭрд╛рд╡ рдереЗ рдХрд┐ рдпрд╣ рдореВрд▓реНрдп рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред

рджрд░рдЕрд╕рд▓, XPath рдХреЗ рдмрд┐рдирд╛ XmlDocument рдХреЗ рд▓рд┐рдП рдХреЛрдб рдиреАрдЪреЗ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬреНрдЮрд╛рдиреА рд▓реЛрдЧ рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХрд╣рд╛рдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧрддрд┐ рдХреЗрд╡рд▓ 10% рдмрдврд╝реА рд╣реИ, рди рдХрд┐ "рдХрдИ рдмрд╛рд░"ред
private static void XmlDocumentReader2( string filename)
{
var doc = new XmlDocument ();
doc.Load(filename);

XmlElement root = doc.DocumentElement;
foreach (XmlElement el in root.ChildNodes)
{
if (el.Name != "item" ) continue ;

string id = el.Attributes[ "id" ].Value;
ProcessId(id);
}
}


* This source code was highlighted with Source Code Highlighter .

Source: https://habr.com/ru/post/In138848/


All Articles