[英]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>
節點,但要Add
到Add
節點,所以最后看起來如下:
<?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.