Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从XMLLINQ中的元素获取内部元素值_Xml_Linq - Fatal编程技术网

如何从XMLLINQ中的元素获取内部元素值

如何从XMLLINQ中的元素获取内部元素值,xml,linq,Xml,Linq,如何获取元素,字符串值中的内部元素值 我的XML格式是 <Filters> <filterValues> <filter_id>BN</filter_id> <value>100</value> </filterValues> <filterValues> <filter_id>SRE</filter_id>

如何获取元素,字符串值中的内部元素值

我的XML格式是

 <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 
}