2012-03-26 182 views
0

我有以下字符串C#鑄簡單的HTML字符串轉換爲HTML對象

 string myHtml="<input type='text' value='123' class='myClass'></input>"; 

我想閱讀或投MYHTML成某種C#HTML對象的,所以我可以做這樣的事情:

DesiredHTMLClass obj=new DesiredHTMLClass(myHTML); 
    string val=obj.value; //Would return 123 
    string mClass=obj.class; //Would return myclass 

我不能使用類似HTML敏捷性包,簡單的C#

感謝

+4

爲什麼不能使用HTML Agility Pack?你所要求的**並不簡單**。 BCL沒有任何內容可以做到。 – Oded 2012-03-26 18:39:13

+0

我不能使用任何第三方的東西。 – abbas 2012-03-26 18:40:46

+0

你應該用雙手綁在背後工作?爲什麼? HAP是開源的,可以進行檢查和審查(它不是一個龐大的代碼庫)。 – Oded 2012-03-26 18:43:13

回答

1

您可以使用重gex檢測標籤並將屬性映射到Html對象的屬性。但這是一件痛苦的工作。

編輯:如果你只需要少量的標籤,你知道它提前你可以用正則表達式解析它。如果你需要解析你遇到麻煩的整個html。

+0

int是否有任何簡單的方法? – abbas 2012-03-26 18:41:18

+0

這是我想起來最簡單的。你只需要解析輸入標籤? – 2012-03-26 18:43:51

0

如果你只能用「簡單的C#」,那麼你就必須手動解析字符串,這將不會很有趣,但我想這是可能的。而且,將屬性作爲解析對象的具體屬性公開是很困難的。

你可以做的是使用類似的SGML reader的片段轉換爲XML,然後讀取它;如果您的HTML格式良好,並且您知道它會一直存在,那麼您可以跳過SGML步驟並使用類似Linq2XML的內容直接解析它,儘管您仍然不會獲得具有屬性的對象,而是必須查詢屬性值等。

+0

是不是SGML閱讀器第三方組件:)? – 2012-03-26 18:43:46

+0

沒有第三方.plz – abbas 2012-03-26 18:46:00

+0

好吧,就像我說過的,如果您知道HTML格式良好,您可以使用XML文檔或Linq到XML來解析它。但如果不是,那麼你必須手動完成。 – kprobst 2012-03-26 19:00:44