2013-05-06 37 views
1

我想提取一個svg element,他的類名是C# regex通過類名選擇xml元素和正則表達式

例如,我有這樣的:

<path fill="none" ... class="highcharts-tracker highcharts-tracker" ... stroke-width="22" zIndex="2" style=""/> 

而且我想通過刪除與highcharts-tracker的類名的每個路徑元素:

new Regex(""); 

有人知道嗎?

+0

您使用的是什麼XML API?你是否真的需要正則表達式來匹配類匹配,或者你可以指定要移除的類名稱並分割屬性值? – 2013-05-06 09:46:41

+0

我只是有一個字符串的svg代碼。這就是爲什麼我想使用正則表達式。 – Dragouf 2013-05-06 09:47:52

+0

不,不,不。你不應該把它當作一個字符串來對待。它的意思是XML,所以你應該*使用它作爲XML。其他任何事情都將導致大量的痛苦。 – 2013-05-06 09:48:32

回答

4

在LINQ to XML,這是非常簡單的:

var classToRemove = "highlights-tracker"; 
var xml = XDocument.Parse(svg); 
var elements = doc.Descendants("path") 
        .Where(x => x.Attribute("class") != null && 
           x.Attribute("class") 
           .Value.Split(' ') 
           .Contains(classToRemove)); 
// Remove all the elements which match the query 
elements.Remove(); 

你應該使用正則表達式來嘗試解析XML,XML ......是很好的通過現有的API來處理,和正則表達式不是一個合適的工具。

編輯:如果它是畸形的(你應該說開始),你應該嘗試找出爲什麼它的畸形和之前將其修復你嘗試做任何其他處理。現在真的沒有理由對XML進行錯誤修改......現有的各種平臺都有很多優秀的XML API。

+0

好的謝謝,會嘗試,但如果然後我想渲染元素作爲文本如何我要做 ? – Dragouf 2013-05-06 09:57:48

+0

@Dragouf:如果它不是有效的XML,那麼就沒有這樣的東西作爲一個元素,是嗎?我不明白你爲什麼反對實際獲得有效數據的想法。 – 2013-05-06 10:01:55

+0

好吧,我的意思是在這種情況下,我可以如何將「元素」變量呈現爲文本? – Dragouf 2013-05-06 10:10:55