Son zamanlarda belirli bir XPath ve öznitelik için bir XML dosyasını ayrıştırmak için XPathDocument ve XNavigator kullanıyorum. XPath'in ne olduğunu önceden bildiğimde çok iyi çalışıyor.Bir XML dosyasında XPath varlığı için en iyi yol testi?
Bazen XPath, birkaç olası XPath değerinden biri olacak ve belirli bir XPath olup olmadığını test edebilmek istiyorum. durumda
ben isimlendirme yanlış alıyorum, burada ben bir XPath çağıracağım ne - bu XML blob verilen:
<foo>
<bar baz="This is the value of the attribute named baz">
</foo>
Ben "nin bir XPath diyorum neyi arıyor olabilir
// foo/bar "ve sonra değeri almak için" baz "özelliğini okur. Bunu yapmak için kullandıkları kod
Örnek: navigator.SelectSingleNode çağrısı başarısız olursa
XPathDocument document = new XPathDocument(filename);
XPathNavigator navigator = document.CreateNavigator();
XPathNavigator node = navigator.SelectSingleNode("//foo/bar");
if(node.HasAttributes)
{
Console.WriteLine(node.GetAttribute("baz", string.Empty));
}
Şimdi, bu bir NullReferenceException veya XPathException dönecektir. Her ikisini de yakalayabilirim ve verilen bir XPath'in bir istisna getirip getirmediğini görmek için yukarıdaki testi tekrar test edebilirim, ama daha iyi bir yol olup olmadığını mı merak ediyordum?
Intellisense'de bariz bir şey görmedim. XPathNavigator vardır .HasAttributes ve .HasChildren ama bir seferde bir düğümün yolu boyunca yinelemenin kısa, kullanmak için daha güzel bir şey görmüyorum. Geçerli XPath verdik ama bir şey uymuyorsa
Bunun LINQ ile ilgisi nedir? XPathNavigator ve XPathDocument, LINQ to XML'in bir parçası değildir. –