2016-07-26 25 views
0

私は以下のXMLを持っています。私は属性を含んでいないそれらのノードを削除したいと思う。 xml以下で属性を持たない最後の4つのノードを削除したい。正確な文字列一致でXMLからノードを削除する方法#

XML

<products> 
    <product system="kn-movies" code="UR">Unrated</product> 
    <product system="mu-movies" code="UR">Unrated</product> 
    <product system="na-movies" code="UR">Unrated</product> 
    <product system="fj-movies" code="UR">Unrated</product> 
    <product>Unrated (Unrated)</product> 
    <product>Unrated (Unrated)</product> 
    <product>Unrated (Без классификации)</product> 
    <product>Unrated (غير مصنف)</product> 
</products> 

私はこのC#のコード

var ratingNode = document.Descendants("rating").Where(t => t != null && t.Equals(Convert.ToString(nodeItem))).FirstOrDefault(); 
          if (ratingNode != null) 
          { 
           ratingNode.Remove(); 
          } 

をしようとしたが、それは私のために働いていません。私が間違っているところで私を助けてください。

答えて

1

ホープこれはトリックあなたは属性はありません要素に対してXmlとクエリにLinqを使用することができ

XmlNodeList nodes = xmlDocument.GetElementsByTagName("products"); 
foreach(XmlNode node in nodes) 
{ 
    if(node.Attributes.Count == 0) 
    { 
     node.RemoveAll; 
    } 
} 
0

、その後、あなただけのこれらの要素を削除するRemove呼び出しを必要とするでしょう。

XDocument doc = XDocument.Load(filepath);  
doc.Root 
    .Descendants()        // flattens the structure 
    .Where(x=> x.Attributes().Count() <= 0)  // filter elements which has no attributes 
    .Remove();         // Remove them 

チェックこのDemo

2
System.Xml.Linq.XDocument doc = System.Xml.Linq.XDocument.Load(filepath); 
var newList = doc.Root.Descendants().ToList().RemoveAll(x => x.Attributes() == null || x.Attributes().Count() <= 0); 

それが役に立てば幸い!

関連する問題