我想知道,有没有任何标准的方法来解析这样的路径类似的字符串:
Server[@Name='MyServerName']/Database[@Name='MyDatabaseName']/Table[@Name='MyTableName' and @Schema='MySchemaName']
Run Code Online (Sandbox Code Playgroud)
结果必须是:
这里最明显的是做一个正则表达式(当然,String.Split),但可能有一个更好的,标准的方式?
有关信息:字符串来自SMO Urn.Value.
UPDATE.
找到答案,见下文.
好吧,我做到了.:)
答案很简单.有Urn.XPathExpression属性.但它的返回值类型是Microsoft.SqlServer.Management.Sdk.Sfc.XPathExpression,而不是System.Xml.XPath.XPathExpression(这让我很困惑).
并且XPathExpression从SMO中可以解析自己的所有必要功能:
var urn = new Urn("Server[@Name='MyServerName']/Database[@Name='MyDatabaseName']/Table[@Name='MyTableName' and @Schema='MySchemaName']");
for (var i = 0; i < urn.XPathExpression.Length; i++)
{
Console.WriteLine("ItemName ({0})", urn.XPathExpression[i].Name);
foreach (DictionaryEntry item in urn.XPathExpression[i].FixedProperties)
{
Console.WriteLine("\tPropertyName ({0}), PropertyValue ({1})", item.Key, item.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
产生这个输出:
ItemName (Server)
PropertyName (Name), PropertyValue ('MyServerName')
ItemName (Database)
PropertyName (Name), PropertyValue ('MyDatabaseName')
ItemName (Table)
PropertyName (Name), PropertyValue ('MyTableName')
PropertyName (Schema), PropertyValue ('MySchemaName')
Run Code Online (Sandbox Code Playgroud)
Christian.K,感谢XPath的暗示!
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |