问题
I want to know how to get attribute "text" via c#?
Example xml:
<?xml version="1.0" encoding="utf-8" ?>
<Model Name="modelname">
<Mode Name="text">
<Class>Class1</Class>
</Mode>
</Model>
I try to parse this xml by using XMLReader(example from msdn) :
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
Console.Write("<" + reader.Name+"");
Console.WriteLine(str);
if (reader.Name =="Mode")
{
namemode = true;
}
if (namemode)
{
if (reader.Name == element)
{
elementExists = true;
}
}
// Console.WriteLine(">");
break;
case XmlNodeType.Text:
Console.WriteLine(reader.Value);
if (elementExists)
{
values.Add(reader.Value);
elementExists = false;
}
break;
}
}
Maybe i should use XMLDocument to do this? Thanks.
回答1:
You could use XDocument
and LINQ
You'll need to include the System.Xml.Linq.XDocument
namespace.
Then you could do something like:
XDocument document = XDocument.Load(filePath);
var modes = (from modes in document.Root.Descendants("Mode")
select modes.Attribute("Name").Value).ToList();
回答2:
Like this:
const string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<Model Name=""modelname"">
<Mode Name=""text"">
<Class>Class1</Class>
</Mode>
</Model>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
Console.WriteLine(doc.DocumentElement["Mode"].Attributes["Name"].Value);
来源:https://stackoverflow.com/questions/18587591/how-to-read-xml-via-c-sharp-such-as-mode-name-text