Проверка строки C # в качестве допустимой схемы XML anyURI - PullRequest
3 голосов
/ 16 сентября 2009

Есть ли лучший способ убедиться, что строка C # является допустимым xs: anyURI, чем следующее?

public bool VerifyAnyURI(string anyUriValue)
{ 
    bool result = false;
    try
    {
        SoapAnyUri anyUri = new SoapAnyUri(anyUriValue);
        result = true;
    }
    catch (Exception)
    {
    }
    return result;
}

Этот конструктор не создает исключений. Любая действительная строка технически является допустимой anyURI?

1 Ответ

7 голосов
/ 16 сентября 2009

Глядя на конструктор SoapAnyUri с Reflector, он вообще не выполняет никакой проверки.

Тип данных anyURI определяется следующим образом :

[Определение:] anyURI представляет ссылку на унифицированный идентификатор ресурса (URI). Значение anyURI может быть абсолютным или относительным и может иметь необязательный идентификатор фрагмента (т. Е. Это может быть ссылка на URI). Этот тип должен использоваться для указания намерения, чтобы значение выполняло роль URI, как определено в [RFC 2396], с поправками, внесенными в [RFC 2732].

Таким образом, вы можете просто использовать Uri.TryCreate с UriKind.RelativeOrAbsolute, чтобы проверить, что строка представляет допустимое значение:

Uri uri;
bool valid = Uri.TryCreate(anyUriValue, UriKind.RelativeOrAbsolute, out uri);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...