如何从XMLLINQ中的元素获取内部元素值
如何获取元素,字符串值中的内部元素值 我的XML格式是如何从XMLLINQ中的元素获取内部元素值,xml,linq,Xml,Linq,如何获取元素,字符串值中的内部元素值 我的XML格式是 <Filters> <filterValues> <filter_id>BN</filter_id> <value>100</value> </filterValues> <filterValues> <filter_id>SRE</filter_id>
<Filters>
<filterValues>
<filter_id>BN</filter_id>
<value>100</value>
</filterValues>
<filterValues>
<filter_id>SRE</filter_id>
<value>355</value>
</filterValues>
</Filters>
请帮助我。var sr=新的StringReader(@”
var sr = new StringReader(@"<Filters>
<filterValues>
<filter_id>BN</filter_id>
<value>100</value>
</filterValues>
<filterValues>
<filter_id>SRE</filter_id>
<value>355</value>
</filterValues>
</Filters>");
XElement filters = XElement.Load(sr);
string filterId = "SRE";
var values = filters.Elements().Where(f => f.Element("filter_id").Value == filterId).Select(element => element.Element("value").Value);
foreach (var value in values)
{
MessageBox.Show(value);
}
BN
100
SRE
355
");
XElement过滤器=XElement.Load(sr);
字符串filterId=“SRE”;
var values=filters.Elements()。其中(f=>f.Element(“filter_id”).Value==filterId)。选择(Element=>Element.Element(“Value”).Value);
foreach(值中的var值)
{
MessageBox.Show(值);
}
使用xpath查找节点会更容易。您可以为此使用entension方法:
var doc = XDocument.Parse(xml);
var nodes = doc.XPathSelectElements("/Filters/filterValues/filter_id[text()='SRE']/following-sibling::value");
foreach (var node in nodes)
{
// here you can use explicit conversion like
// var value = (int)node; if you want to cast the node value to int
// var node = (string)node; or to string
}
你的回答很好。但我在过滤器值中有更多的内部元素。我需要得到所有的内在元素。如何得到它。请帮帮我。很抱歉稍后解释。@user1120998这些内部元素是什么样子的?使用示例XML更新您的问题,我将帮助您。@user1120998请使用您希望接收的数据示例更新问题,以便能够帮助您获得输出。感谢您为我花费的时间。@user1120998请确保您阅读了为使用XpathSelectElements而添加的dll。在System.xml.linq中不包含此method@user1120998:这是一个很好的例子。您应该使用System.Xml.XPath添加
使用指令对代码>进行修改。
var doc = XDocument.Parse(xml);
var nodes = doc.XPathSelectElements("/Filters/filterValues/filter_id[text()='SRE']/following-sibling::value");
foreach (var node in nodes)
{
// here you can use explicit conversion like
// var value = (int)node; if you want to cast the node value to int
// var node = (string)node; or to string
}