2010-06-19 49 views
1

考慮以下...可以DocumentNode.SelectSingleNode跳過錨標籤事件的選擇嗎?

HtmlNode myDiv = doc.DocumentNode.SelectSingleNode("//div[@id='someid']"); 

......其中所產生myDiv.InnerHtml包含:

<span>...other content I want to consume...</span> 
<a href="http://www.somewhere.com" onmousedown="return somefunc('random','parm','values','SHXA213')">Click Me</a> 
<span>...and more content I want to consume...</span> 

有沒有辦法來選擇的onmousedown事件部分錨標籤?

解決方案
我需要做的是以下幾點:

HtmlNodeCollection anchors = myDiv.SelectNodes(@"//a[@class='someclass']"); 
anchors[0].SetAttributeValue("onmousedown", ""); 

// could have also used anchors[0].Attributes.Remove() or .RemoveAt() 
+0

你能否解釋一下你想要完成的事情?爲什麼在你的情況下,onmousedown不好?如果您使用SelectSingleNode的結果,則可以忽略任何您不關心的子節點/屬性。我有一種感覺,有一些我錯過了。 – ckramer 2010-06-19 00:28:26

+0

當然,我正在從Google搜索一些搜索結果。我需要InnerHtml內容幾乎是從一個單獨的div。 onmousedown在我將這些結果消費到的網站上下文中拋出javascript錯誤。我想SelectSingleNode會允許一種方式來忽略屬性,但我還沒有能夠找到語法。 – Clay 2010-06-19 00:34:25

回答

0

有沒有辦法不選擇錨標記的 onmousedown事件部分?

不號使用XPathSelectSingleNode)。

XPath是一種查詢語言,它不能修改由XPath表達式選擇的節點。您需要額外的語言(DOM或XSLT)來更改節點(例如剝離屬性)。

+0

謝謝您的確認。我找到了我正在尋找的東西,並會相應地更新我的帖子。 – Clay 2010-06-19 00:57:57

相關問題