4

这是一个示例 xml 我只需要 Nid 属性

<Server>
  <Network Nid="43d5377-0dcd-40e6-b95c-8ee980b1e248">
  <Client_Group id="20">963440d0-96dc-46a4-a54d-7251a65f585f</Client_Group>
  <ClientID id="20">3fc8ffa1-c16b-4d7b-9e55-1e88dfe15277</ClientID>
<Server>

这是 XAttributes 的 IEnumerable,因此我们可以使用 Linq 查询 XML 文档中的属性,使用 XElement 访问 XML 文件。出于某种原因,这将返回 Null,并且需要返回属性名称“Nid”的属性。

 XElement main = XElement.Load(fi.FullName);

IEnumerable<XAttribute> successAttributes =
                 from attribute in main.Attributes()
                 where attribute.Name.LocalName == "Nid"
                 select attribute;

这是我执行 Linq 查询以获取属性在数组中的位置

foreach (string attribute in successAttributes)
                { 
                    for (int i = 0; i < IntializedPorts.Count(); i++)
                    {
                      //running Intialization
                      IntializedNetworks[i] = attribute.ToString();
                    }
                }
4

2 回答 2

0

main这是根元素:<Server>- 它没有Nid属性。

你想要这样的东西:

Guid nid = (Guid)main.Element("Network").Attribute("Nid");

或多个:

Guid[] arr = (from attr in main.DescendentsOrSelf().Attributes("Nid")
              select (Guid)attr).ToArray();
于 2013-07-28T14:09:38.427 回答
0

这可能会对您有所帮助。你写的所有代码都是正确的,你只是宁愿使用而main.Element("Network").Attributes()不是main.Attributes()

IEnumerable<XAttribute> successAttributes =
                 from attribute in main.Element("Network").Attributes()
                 where attribute.Name.LocalName == "Nid"
                 select attribute;

代表这个问题,我编写了下面的示例程序,它将产生预期的 NID 值

string strVal = "<Server><Network Nid=\"43d5377-0dcd-40e6-b95c-8ee980b1e248\"/><Client_Group id=\"20\">963440d0-96dc-46a4-a54d-7251a65f585f</Client_Group><ClientID id=\"20\">3fc8ffa1-c16b-4d7b-9e55-1e88dfe15277</ClientID></Server>";

            XElement main = XElement.Load(new StringReader(strVal));

            IEnumerable<XAttribute> successAttributes =
                 from attribute in main.Element("Network").Attributes()
                 where attribute.Name.LocalName == "Nid"
                 select attribute;
于 2013-07-28T14:22:07.787 回答