Zrobiłem metodę, która sprawdza, czy atrybut istnieje w pliku XML. Jeśli nie istnieje, zwraca "False". Działa, ale parsowanie pliku trwa bardzo długo. Wygląda na to, że odczytuje cały plik dla każdego pojedynczego wiersza. Czy coś tu przeoczyłem? Czy mogę w jakiś sposób zwiększyć jego skuteczność?Analiza składni XML, czy istnieje atrybut
public static IEnumerable<RowData> getXML(string XMLpath)
{
XDocument xmlDoc = XDocument.Load("spec.xml");
var specs = from spec in xmlDoc.Descendants("spec")
select new RowData
{
number= (string)spec.Attribute("nbr"),
name= (string)spec.Attribute("name").Value,
code = (string)spec.Attribute("code").Value,
descr = (string)spec.Attribute("descr").Value,
countObject = checkXMLcount(spec),
return specs;
}
public static string checkXMLcount(XElement x)
{
Console.WriteLine(x.Attribute("nbr").Value);
Console.ReadLine();
try
{
if (x.Attribute("mep_count").Value == null)
{
return "False";
}
else
{
return x.Attribute("mep_count").Value;
}
}
catch
{
return "False";
}
}
Testowałem zastąpić metodę z takim, który zwraca tylko i odbierać ciąg:
public static string checkXMLcount(string x)
{
Console.WriteLine(x);
Console.ReadLine();
return x;
}
Zrobiłem pliku XML z tylko jednym rzędzie. Konsola wypisuje wartość 15 razy. Jakieś pomysły?
Po co pisać własną wersję XPath, zastanawiam się? – raina77ow