首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用LINQ查询C#中的CIM

用LINQ查询C#中的CIM
EN

Stack Overflow用户
提问于 2021-03-21 11:23:58
回答 1查看 145关注 0票数 0

我正在寻找一种使用LINQ查询CIM文件的方法,以加快我对数据的分析,并验证从包含电网元素的数据库中导出的数据。由于我是C#的新手,我猜想在控制台应用程序中加载CIM很容易,并且基于标记值过滤某些元素。然而,到目前为止,我发现的所有教程都是直截了当的,其中的元素被命名为“学生”、“购买”等等。

我的元素名为“cim:Load根defined”,其中"cim“是根节点中定义的实际地址。

这样,当我尝试选择所有名为“cim:Load早餐开关”的元素时,我会在运行时抛出一个异常,因为元素的名称不能包含冒号。

我想从CIM文件中选择的元素示例:

代码语言:javascript
复制
<cim:LoadBreak rdf:ID="101">
    <cim:ConductingEquipment.phases>A</cim:ConductingEquipment.phases>
    <cim:IdentifiedObject.description>PoleMounted</cim:IdentifiedObject.description>
 </cim:LoadBreak>

当我在控制台中打印所有元素的名称时

代码语言:javascript
复制
IEnumerable<XElement> elements = xmlDoc.Elements();

        foreach (var item in elements)
        {
            Console.WriteLine(item.Name);
        }

我得到类似于"{http://[address从根节点]}LoadBreak“之类的信息。

我不知道是否有可能这样做,但我只是好奇,谁是有经验的开发人员是否需要做类似的事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-21 15:39:36

XML缺少一个带有命名空间声明的根元素。

这里是一个概念上的例子。它展示了如何处理名称空间并使用名称空间查询XML。

c#

代码语言:javascript
复制
void Main()
{
    XDocument xdoc = XDocument.Parse(@"<rdf:RDF xmlns:cim='http://iec.ch/TC57/2008/CIM-schema-cim13#'
                 xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
            <cim:LoadBreak rdf:ID='101'>
                <cim:ConductingEquipment.phases>A</cim:ConductingEquipment.phases>
                <cim:IdentifiedObject.description>PoleMounted</cim:IdentifiedObject.description>
            </cim:LoadBreak>
        </rdf:RDF>");

    XNamespace cim = xdoc.Root.GetNamespaceOfPrefix("cim");
    XNamespace rdf = xdoc.Root.GetNamespaceOfPrefix("rdf");

    foreach (XElement xelem in xdoc.Descendants(cim + "LoadBreak").Elements())
    {
        Console.WriteLine("{0}: {1}"
            , xelem.Name.LocalName
            , xelem.Value);
    } 
}

输出

代码语言:javascript
复制
ConductingEquipment.phases: A
IdentifiedObject.description: PoleMounted
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66731720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档