簡體   English   中英

使用C#.NET中的XDocument庫刪除內部節點,但不刪除xml中的值

[英]Delete an inner node but not the value in xml with XDocument library in C# .NET

我有以下XML文件:

<?xml version="1.0" encoding="utf-8"?>
<html>
  <body>
    <p><span class="screenitems">Add</span></p>
  </body>
</html>

我希望它刪除<span>節點,但要AddAdd節點,所以最后看起來如下:

<?xml version="1.0" encoding="utf-8"?>
<html>
  <body>
    <p>Add</p>
  </body>
</html>

有沒有好的/簡單的方法來做到這一點?

使用ReplaceWith ,例如

XDocument doc = XDocument.Load("file.xml");
XElement span = doc.Descendants("p").First().Elements("span").FirstOrDefault(s => (string)s.Attribute("class") == "screenitems");
if (span != null) 
{
  span.ReplaceWith(span.Nodes());
}

備注:您的XML看起來像HTML代碼。 HTML並不總是有效的XML(請參閱BR-Tag: <br> )。 這可能會導致異常-因此,您應該非常確定HTML是有效的XML(然后可以使用XDocument ),或者應該使用Regex.Replace()

Regex spanRegex = new Regex(@"<span[^>]*>([\s\S]*?)</span[^>]*>");
spanRegex.Replace(input, match => { return match.Groups[1].ToString(); });

(請參閱http://regexr.com/3cjuq

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM