[英]Want to get values from XML in C# in list
实际上我想从列表中的 C# 中的 XML 中获取值。 有一些特定条件之类的。 我需要在我想获取名称的属性中显示 ruleid、dataprovider,在需要获取 value(20)、operator(greaterthan or lessthan) 类型 =“Healthy”的条件下。
我尝试以下列方式解析数据:
public static void readXml()
{
XmlDocument xmldoc = new XmlDocument();
XmlNodeList xmlnode;
int i = 0;
List<Rule> listx = new List<Rule>();
FileStream fs = new FileStream("C://ConsoleApplication1//sample_manifest.xml", FileMode.Open, FileAccess.Read);
xmldoc.Load(fs);
xmlnode = xmldoc.GetElementsByTagName("attribute", "condition");
XmlNodeList list = xmldoc.SelectNodes(@"/psmsmanifiest/rules/rule/attributes");
foreach (XmlNode node in list)
{
foreach (XmlNode childNode in node.ChildNodes)
{
//string dataprovider = node["Dataprovider"].Attributes.Item(0);
var attribute = node["attribute"].InnerXml;
Console.WriteLine(attribute);
Console.ReadLine();
}
}
}
试试下面的代码。 我修复了 xml 标签属性。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string input =
"<psmsmanifiest version=\"2\" lastmodified=\"2015-08-06 03:53:06.207\">" +
"<rules>" +
"<!--sample for runtime data provider-->" +
"<rule ruleid=\"8504dcad-f748-4add-9e95-239d5382f1c6\" dataprovider=\"runtime\">" +
"<attributes>" +
"<attribute name=\"platform.attibute1.value\" type=\"int\">" +
"<conditions>" +
"<condition type=\"healthy\" operator=\"greaterthan\">100></condition>" +
"<condition type=\"unhealthy\" operator=\"greaterthanequal\">100></condition>" +
"</conditions>" +
"</attribute>" +
"<attribute name=\"platform.attibute2.value\" type=\"int\">" +
"<conditions>" +
"<condition type=\"healthy\" operator=\"greaterthan\">100></condition>" +
"<condition type=\"unhealthy\" operator=\"greaterthanequal\">100></condition>" +
"</conditions>" +
"</attribute>" +
"</attributes>" +
"</rule>" +
"</rules>" +
"</psmsmanifiest>";
XDocument doc = XDocument.Parse(input);
var results = doc.Descendants("rule").Select(x => new
{
ruleid = x.Attribute("ruleid").Value,
dataprovider = x.Attribute("dataprovider").Value,
attributes = x.Descendants("attribute").Select(y => new
{
name = y.Attribute("name").Value,
conditions = y.Descendants("condition").Select(z => new
{
_type = z.Attribute("type").Value,
_operator = z.Attribute("operator").Value,
_value = z.Value
}).ToList()
}).ToList()
}).ToList();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.