简体   繁体   中英

LINQ to XML C# get root element attribute

Lts say i have XElement object doc:

<parameters mode="solve">
  <inputs>
    <a>value_a</a>
      ...
       ...

how do i get the value of the attribute of the first element (parameters), in other words how do i check which mode is it on.

if i write

if ((string)doc.Element("parameters").Attribute("mode").Value == "solve") { mode = 1; }

it gives me null object reference error

If doc is an XElement , as you say in your question, then you probably don't need to match it again:

if (doc.Attribute("mode").Value.ToString() == "solve") {
    mode = 1;
}

If it is an XDocument , then you can use its Root property to refer to the document element:

if (doc.Root.Attribute("mode").Value.ToString() == "solve") {
    mode = 1;
}

Just use the Root

if (doc.Root.Attribute("mode").Value.Equals("solve"))
{
   mode = 1;
}

When you are calling doc.Element("parameters") , you are trying to look at the elements below the root element (in this case, the elements at the same level as <inputs> ). You want to do this instead:

if (input.Attribute("mode").Value == "solve") { mode = 1; }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM