You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中解析Solr分面结果并提取价格区间数据

在C#中提取Solr分面XML中的价格区间数值

没问题,我来帮你搞定这个!针对你拿到的Solr分面XML结果,下面是两种实用的C#解析方法,能轻松把cheap、average、expensive对应的数值提取到单独变量里:

方法一:使用LINQ to XML(推荐,代码更简洁)

这种方法需要引用System.Xml.Linq命名空间,利用LINQ语法快速定位节点:

// 假设你已经把XML内容加载到了字符串xmlString中
XDocument doc = XDocument.Parse(xmlString);

// 定位到price节点下的各个int元素
int cheap = int.Parse(doc.Descendants("lst")
    .First(l => l.Attribute("name")?.Value == "price")
    .Elements("int")
    .First(e => e.Attribute("name")?.Value == "cheap")
    .Value);

int average = int.Parse(doc.Descendants("lst")
    .First(l => l.Attribute("name")?.Value == "price")
    .Elements("int")
    .First(e => e.Attribute("name")?.Value == "average")
    .Value);

int expensive = int.Parse(doc.Descendants("lst")
    .First(l => l.Attribute("name")?.Value == "price")
    .Elements("int")
    .First(e => e.Attribute("name")?.Value == "expensive")
    .Value);

如果担心节点可能不存在导致异常,可以用更安全的写法,结合int.TryParse避免崩溃:

var priceLst = doc.Descendants("lst")
    .FirstOrDefault(l => l.Attribute("name")?.Value == "price");

int cheap = 0;
if (priceLst?.Elements("int").FirstOrDefault(e => e.Attribute("name")?.Value == "cheap") is XElement cheapElem)
{
    int.TryParse(cheapElem.Value, out cheap);
}

// average和expensive可以用同样的安全逻辑处理

方法二:使用XmlDocument(传统DOM解析)

如果你习惯用传统的XmlDocument,也可以这样写,需要引用System.Xml命名空间:

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);

// 先找到price节点
XmlNode priceNode = doc.SelectSingleNode("//lst[@name='price']");

// 提取各个数值
int cheap = int.Parse(priceNode.SelectSingleNode("int[@name='cheap']").InnerText);
int average = int.Parse(priceNode.SelectSingleNode("int[@name='average']").InnerText);
int expensive = int.Parse(priceNode.SelectSingleNode("int[@name='expensive']").InnerText);

同样,为了避免节点不存在的异常,建议添加空值判断:

XmlNode priceNode = doc.SelectSingleNode("//lst[@name='price']");
int cheap = 0;
if (priceNode?.SelectSingleNode("int[@name='cheap']") is XmlNode cheapNode)
{
    int.TryParse(cheapNode.InnerText, out cheap);
}

// average和expensive的安全处理逻辑一致

两种方法都能帮你快速拿到想要的数值,LINQ to XML的写法更现代简洁,XmlDocument则适合维护旧项目时使用~

内容的提问来源于stack exchange,提问作者Joseph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:42:33