xml名称空间的属性

Elhanan

我需要从节点获取属性。

有时我得到不同的属性,例如,有时是<attribute id="0x1162834">和有时<attribute-list id="0x1162834">,并且我不知道如何获得该属性

谢谢你的帮助。

这是我的XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model-response-list
    xmlns="http://www.ca.com/spectrum/restful/schema/response" total-models="6119" throttle="1000">
    <model-responses>
        <model mh="0x504067">
            <attribute id="0x12d7f">XX.XXX.XX.X</attribute>
            <attribute id="0x11ee8">2</attribute>
            <attribute id="0x118b9"></attribute>
            <attribute error="NoSuchAttribute" id="0x1162834"/>
            <attribute error="NoSuchAttribute" id="0x1161461"/>
        </model>
        <model mh="0x40007f">
            <attribute id="0x12d7f">XX.XX.XX.X</attribute>
            <attribute id="0x11ee8">9</attribute>
            <attribute-list id="0x1162834">
                <instance oid="0" value=" Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz       "/>
                <instance oid="1" value=" Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz       "/>
            </attribute-list>
            <attribute-list id="0x1161461">
                <instance oid="0" value="6"/>
                <instance oid="1" value="6"/>
            </attribute-list>
        </model>
    </model-responses>
    <link type="application/xml" href="http://spectrum/spectrum/restful/devices/?id=53c271cb-cb69-4b13-b95f-50e39ebecd5e&amp;start=1000&amp;throttlesize=1000" rel="next"/>
</model-response-list>

这是我在C#中的代码:

using (System.IO.Stream s = webRequest.GetResponse().GetResponseStream())
{
    using (System.IO.StreamReader sr = new System.IO.StreamReader(s))
    {
        var XMLResponse = sr.ReadToEnd();
        XDocument xmlDoc = XDocument.Parse(XMLResponse);

        XName qualifiedName = XName.Get("model", "http://www.ca.com/spectrum/restful/schema/response");

        foreach (var device_handel in xmlDoc.Descendants(qualifiedName))
        {
            XName QN_attr = XName.Get("attribute", "http://www.ca.com/spectrum/restful/schema/response");

            attr_devices[0] = device_handel.Descendants(QN_attr).Where(e => e.Attribute("id").Value == "0x12d7f").Select(e => e).Single().Value;
            attr_devices[1] = device_handel.Descendants(QN_attr).Where(e => e.Attribute("id").Value == "0x11ee8").Select(e => e).Single().Value;
            attr_devices[2] = device_handel.Descendants(QN_attr).Where(e => e.Attribute("id").Value == "0x118b9").Select(e => e).Single().Value;
            attr_devices[3] = device_handel.Descendants(QN_attr).Where(e => e.Attribute("id").Value == "0x1162834").Select(e => e).Single().Value;
            attr_devices[4] = device_handel.Descendants(QN_attr).Where(e => e.Attribute("id").Value == "0x1161461").Select(e => e).Single().Value;
        }
    }
}
Xanatos

我们可以从这样的事情开始:

XName qualifiedName = XName.Get("model", "http://www.ca.com/spectrum/restful/schema/response");
XName QN_attr = XName.Get("attribute", "http://www.ca.com/spectrum/restful/schema/response");
XName QN_attrList = XName.Get("attribute-list", "http://www.ca.com/spectrum/restful/schema/response");

foreach (var device_handel in xmlDoc.Descendants(qualifiedName))
{
    var attrsAndLists = device_handel.Elements().Where(x => x.Name == QN_attr || x.Name == QN_attrList).ToArray();

    attr_devices[0] = attrsAndLists.Where(e => e.Attribute("id").Value == "0x12d7f").Select(e => e.Value).SingleOrDefault();
    attr_devices[1] = attrsAndLists.Where(e => e.Attribute("id").Value == "0x11ee8").Select(e => e.Value).SingleOrDefault();
    attr_devices[2] = attrsAndLists.Where(e => e.Attribute("id").Value == "0x118b9").Select(e => e.Value).SingleOrDefault();
    attr_devices[3] = attrsAndLists.Where(e => e.Attribute("id").Value == "0x1162834").Select(e => e.Value).SingleOrDefault();
    attr_devices[4] = attrsAndLists.Where(e => e.Attribute("id").Value == "0x1161461").Select(e => e.Value).SingleOrDefault();

    Console.WriteLine(string.Join(", ", attr_devices));
}

请注意,attribute-list它与的结构不同attribute尽管第二个元素包含一个包含“值”的文本元素,但不清楚您要从第一个元素中提取什么。嗯,在您的xml中,id="0x118b9"仅在第一个模型中存在,而在第二个模型中不存在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

xml中名称空间在属性上的范围

来自分类Dev

无法获取XML的名称空间属性

来自分类Dev

XML属性未获取名称空间前缀

来自分类Dev

使用名称空间更新SQL Server中的XML属性

来自分类Dev

python 2.7 XML lxml名称空间前缀属性问题

来自分类Dev

XML标记中的属性名称空间是什么?

来自分类Dev

使用带有lxml的嵌套名称空间解析XML属性

来自分类Dev

使用名称空间更新SQL Server中的XML属性

来自分类Dev

在PHP中使用DOMXPath获取XML属性,而忽略名称空间

来自分类Dev

XML名称空间的含义

来自分类Dev

XML名称空间的含义

来自分类Dev

XML在名称空间中查找名称空间

来自分类Dev

xml名称空间出现xml

来自分类Dev

当XML上存在默认名称空间时,如何使用XSLT添加具有名称空间的属性

来自分类Dev

XSD属性前缀名称空间

来自分类Dev

XML中的名称空间需求

来自分类Dev

使用名称空间解析XML

来自分类Dev

XML文档默认名称空间

来自分类Dev

从WebApi删除XML名称空间

来自分类Dev

XML名称空间前缀错误

来自分类Dev

XML XSD名称空间问题

来自分类Dev

Ansible-XML名称空间

来自分类Dev

Primefaces 4.0的XML名称空间

来自分类Dev

声明MathML的XML名称空间

来自分类Dev

解析包含名称空间的 XML

来自分类Dev

Android XML是否可以使用带有自定义属性的工具名称空间?

来自分类Dev

使用Powershell在具有名称空间的XML中选择具有Xpath的属性

来自分类Dev

使用XSLT更改名称空间-不复制XML的所有属性

来自分类Dev

无法使用C#删除xml文件名称空间中的xr:uid属性