gpt4 book ai didi

c# - 如何从 SMO 解析这个类似路径的字符串?

转载 作者:太空狗 更新时间:2023-10-29 23:16:37 47 4
gpt4 key购买 nike

我想知道,是否有任何标准的方法来解析这种类似路径的字符串:

Server[@Name='MyServerName']/Database[@Name='MyDatabaseName']/Table[@Name='MyTableName' and @Schema='MySchemaName']

结果必须是:

  • 元素名称(服务器)
    • PropertyName(名称)、PropertyValue(我的服务器名称)
  • 项目名称(数据库)
    • PropertyName(名称)、PropertyValue(我的数据库名称)
  • 项目名称(表)
    • PropertyName(名称)、PropertyValue(我的表名)
    • PropertyName(架构)、PropertyValue(MySchemaName)

这里最明显的是创建一个正则表达式(当然还有 String.Split),但是否有更好的标准方法?

信息:字符串来自 SMO 的 Urn.Value .

更新。

答案找到了,见下文。

最佳答案

好吧,我做到了。 :)

答案很简单。有 Urn.XPathExpression属性(property)。但它的返回值类型是Microsoft.SqlServer.Management.Sdk.Sfc.XPathExpression , 不是 System.Xml.XPath.XPathExpression (这让我很困惑)。

来自 SMO 的 XPathExpression 具有解析自身的所有必要功能:

        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);
}
}

产生这个输出:

ItemName (Server)
PropertyName (Name), PropertyValue ('MyServerName')
ItemName (Database)
PropertyName (Name), PropertyValue ('MyDatabaseName')
ItemName (Table)
PropertyName (Name), PropertyValue ('MyTableName')
PropertyName (Schema), PropertyValue ('MySchemaName')

Christian.K,感谢您提供有关 XPath 的提示!

关于c# - 如何从 SMO 解析这个类似路径的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12049613/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com