【问题标题】:condition in linqToXmllinq To Xml 中的条件
【发布时间】:2011-07-19 20:39:47
【问题描述】:

XML

<Questions>
   <Question>
      <Id>1</Id>
      <Text>aaa</Text>
    </Question>
    <Question>
      <Id>2</Id>
      <Text>bbb</Text>
   </Question>
</Questions>

代码

question="aaa";

var doc = XDocument.Load(Server.MapPath(".") + "\\Questions.xml");
        var elements = from element in doc.Descendants("Question")
                       let txt = element.Element("Text")
                       where question.CompareTo (txt)==0 
                       select new
                       {
                           Id = element.Element("Id").Value,
                       };

这段代码elements.count()==>0

我希望从 xml 中选择 txt=='aaa'

【问题讨论】:

    标签: xml linq xml-serialization linq-to-xml linq-to-objects


    【解决方案1】:

    let txt = element.Element("Text") 行返回一个 XElement 而不是文本,因此您的 CompareTo 条件将爆炸而不是检查文本值。

    相反,您可以通过.Value 属性获取节点的值。

    ...
    let txt = element.Element("Text").Value
    ...
    

    var elements = from element in doc.Descendants("Question") 行将成功查找元素,但作为练习,您可能希望从根节点或相对层次结构开始。

    ...
    var elements = from element in doc.Root.Descendants("Question")
    ...
    

    其余的代码看起来不错(较少的异常处理)。

    以下对我有用...

    string xml = @"<Questions>
       <Question>
          <Id>1</Id>
          <Text>aaa</Text>
        </Question>
        <Question>
          <Id>2</Id>
          <Text>bbb</Text>
       </Question>
    </Questions>";
    
    string question = @"aaa";
    var doc = XDocument.Parse(xml);
    var elements = from element in doc.Root.Descendants("Question")
               let txt = element.Element("Text").Value
               where question.CompareTo(txt)==0 
               select new
               {
                   Id = element.Element("Id").Value,
               };
    
    Console.WriteLine(elements.Count()); //1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-21
      • 2013-02-17
      相关资源
      最近更新 更多