innertext返回所有的孩子和自己的文本。我怎么办除了一个孩子的文字

时间:2012-03-26 04:51:27

标签: c#

我有一个xml文件

<first>
   first1
   <second>second1</second>
   first2
   <third>third1</third>
   first3
</first>

我想阅读<first>的自我文字和<third>的儿童文字,但孩子<second>除外

答案应该是

first1 first2 third1 first3

我试过了:

.select(descendant::first1[not(descendant::second)]

但它不起作用。需要建议

2 个答案:

答案 0 :(得分:1)

  XElement elem = XElement.Parse(xml);      
  var query = (from e1 in elem.Nodes()
                    where e1.GetType() == typeof(XText)
                    select (e1 as XText).Value.Trim())
                    .Union(from e2 in elem.Descendants()
                               where e2.Name.LocalName.Equals("third")
                               select e2.Value);

答案 1 :(得分:-2)

尝试在XMLDocument中获取XML并使用它。

 XmlDocument doc = new XmlDocument();
  doc.LoadXml(xml);
  var nodes = doc.DocumentElement.ChildNodes;
  StringBuilder result = new StringBuilder();
  foreach (XmlNode node in nodes)
  {
    if (!node.Name.Equals("second"))
    {
      result.Append(node.InnerText);
      result.Append(" ");
    }
  }

希望它能解决你的问题。