验证C#字符串是否为有效的XML Schema anyURI

时间:2009-09-16 15:58:54

标签: c# parsing xsd

有没有更好的方法来验证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 个答案:

答案 0 :(得分:7)

使用Reflector查看SoapAnyUri构造函数,它根本不执行任何验证。

anyURI 数据类型is defined as follows

  

[定义:] anyURI表示统一资源标识符引用(URI)。 anyURI值可以是绝对值或相对值,并且可以具有可选的片段标识符(即,它可以是URI参考)。此类型应用于指定值满足[RFC 2396]定义的URI角色的意图,并由[RFC 2732]修改。

因此,您只需使用 Uri.TryCreate UriKind.RelativeOrAbsolute来验证字符串是否代表有效值:

Uri uri;
bool valid = Uri.TryCreate(anyUriValue, UriKind.RelativeOrAbsolute, out uri);