如何使用linq找到XElement

时间:2009-07-25 13:34:15

标签: c# xml linq

我正在使用c#。

<Tüberkiloz>
    <Kod>
      1000
    </Kod>
  </Tüberkiloz>
  <Tifo>
    <Kod>
      1001
    </Kod>
  </Tifo>
  <Bakteriyel_Endokardit>
    <Kod>
      1002
    </Kod>
  </Bakteriyel_Endokardit>

这是我的xml。我想带Tifo。我必须使用“Kod”节点。例如 XpathSelectelement(“Kod”)。value = 1001

3 个答案:

答案 0 :(得分:1)

假设每个元素都有一个<Kod>元素,并且它们都包含有效的整数,您可以使用:

var doc = XDocument.Parse(@"
    <root>
    <Tüberkiloz>
        <Kod>1000</Kod>
    </Tüberkiloz>
    <Tifo>
      <Kod>1001</Kod>
    </Tifo>
    <Bakteriyel_Endokardit>
      <Kod>1002</Kod>
    </Bakteriyel_Endokardit>
    </root>");

var matches = from el in doc.Root.Elements()
              where (int)(el.Element("Kod")) == 1001
              select el;

答案 1 :(得分:0)

这会有用吗?

XElement root = XElement.Parse("...");
var tifo = (
    from kod in root.Descendants("Kod")
    where kod.Value == "1001"
    select kod.Parent
    ).First();

答案 2 :(得分:0)

这将为您提供一组XElements,它们具有Kod元素的匹配值......

var doc = XDocument.Parse(@"
                <root>
                <Tüberkiloz>
                    <Kod>1000</Kod>
                </Tüberkiloz>
                <Tifo>
                  <Kod>1001</Kod>
                </Tifo>
                <Bakteriyel_Endokardit>
                  <Kod>1002</Kod>
                </Bakteriyel_Endokardit>
                </root>");

var matchingElements = doc.XPathSelectElements("root/*[./Kod/text() = '1001']");  

你可以使用XPath语句中的值,在本例中为1001. dahlbyk的答案和Thorarin的答案都应该同样有效(除非你已经将你的值作为int已经不需要演员,我只是比较它)。

我只是想我会发布一个简单的单行解决方案来提供选项。

相关问题