首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果值增加了阈值,则读取XML的特定元素

如果值增加了阈值,则读取XML的特定元素
EN

Stack Overflow用户
提问于 2017-06-28 05:56:54
回答 2查看 281关注 0票数 0

我可以读取一个名为101.xml的XML文件,其中我可以读取名为light的元素,其中有两个值--比如1280和128 --我可以显示它。但我只想显示大于800的值。检查图像中的XML文件。

这就是我在Listbox中读取这两个轻量元素时所做的工作:

读取新文件:

代码语言:javascript
复制
        XmlTextReader Reader = new XmlTextReader(@"101.xml");
        XmlDocument doc = new XmlDocument();
        doc.Load(Reader);
        XPathNavigator nav = doc.CreateNavigator();

        //compile xpath 
        XPathExpression expr;
        expr = nav.Compile("/MotePacket/ParsedDataElement[Name='light']");
        XPathNodeIterator iterator = nav.Select(expr);

        //iterate node set and see values in list box
        listBox1.Items.Clear();
        try
        {
            while (iterator.MoveNext())
            {
                XPathNavigator nav2 = iterator.Current.Clone();
                listBox1.Items.Add("content and value: " + nav2);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-28 06:33:29

正如我在对这个问题的注释中提到的,您可以使用XDocument类和Linq查询来过滤xml数据。

请参见:

代码语言:javascript
复制
XDocument xdoc = XDocument.Load(fullfilename);

var data = xdoc.Descendants("ParsedDataElement")
    .Where(x=>x.Element("Name").Value == "light" && Double.Parse(x.Element("ConvertedValue").Value)>800)
    .Select(x=> new
    {
        Name =  x.Element("Name").Value,
        ConvertedValue = Double.Parse(x.Element("ConvertedValue").Value)
    })
    .ToList();

现在,您可以通过使用ListBox循环或设置DataSource将数据插入到DataSource对象中。

详情请见:

基本查询(LINQ ) (C#)

如何:将Windows或ListBox控件绑定到数据

祝好运!

票数 0
EN

Stack Overflow用户

发布于 2017-06-28 06:17:54

这是非常糟糕的xml格式。建议换衣服。下面是解析xml的代码

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            List<XElement> parsedDataElements = doc.Descendants("ParsedDataElement").ToList();

            for (int i = 0; i < parsedDataElements.Count; i += 2)
            {
                DataElement newDataElement = new DataElement();
                DataElement.elements.Add(newDataElement);

                newDataElement.temperature = (double)parsedDataElements[i].Element("ConvertedValue");
                newDataElement.light = (int)parsedDataElements[i + 1].Element("ConvertedValue");
            }
        }
    }
    public class DataElement
    {
        public static List<DataElement> elements = new List<DataElement>();

        public double temperature { get; set; }
        public int light { get; set; }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44794640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档