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.

questionAnswers(9)

yourAnswerToTheQuestion