Sprawdź dobrze sformatowany XML bez try / catch?
Czy ktoś wie, jak mogę sprawdzić, czy ciąg zawiera dobrze sformatowany XML bez użycia czegoś takiegoXmlDocument.LoadXml()
w bloku try / catch? Mam dane wejściowe, które mogą być XML lub nie, i chcę, aby kod rozpoznający dane wejściowe nie był XML-em bez polegania na try / catch, zarówno dla szybkości, jak i ogólnej zasady, że nie wyjątkowe okoliczności nie powinny podnosić wyjątki. Obecnie mam kod, który to robi;
<code>private bool IsValidXML(string value) { try { // Check we actually have a value if (string.IsNullOrEmpty(value) == false) { // Try to load the value into a document XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(value); // If we managed with no exception then this is valid XML! return true; } else { // A blank value is not valid xml return false; } } catch (System.Xml.XmlException) { return false; } } </code>
Ale wygląda na coś, co nie powinno wymagać try / catch. Wyjątek powoduje wesołe piekło podczas debugowania, ponieważ za każdym razem, gdy sprawdzam ciąg, debugger się tutaj załamuje, „pomagając” przy moim nieznośnym problemie.