html - vb.net 获取 HTML 元素的样式

标签 html asp.net .net vb.net mshtml

我正在解析一些 html 以将其转换为 openXML xlsx。我无法提取样式属性。我可以使用自定义解析器强制执行此操作,但是,我希望尽可能多地使用 mshtml。源 html 可能有一些非标准格式。以下是详细信息:

(以下:输入、代码和调试输出)

输入字符串:

<div id="GLGV" class="GLVG1">
<div class="GLGVOuterRow" ID="GLGV_PRTS_0" style="height:20px;">
<span id="ExtID01_0000" title="Note - N0001" class="ExtID01Label">N0001</span>
<span id="Note01" class="Note01" style="display:inline-block;width:70px;">Area Name</span>
<span id="Main01" class="MainTextAll" style="display:inline-block;height:16px;width:250px;">My new area</span>
<span id="OTLID_0" class="GRPL_Hidden">8270</span>
<span id="OTLParID_0" class="GRPL_Hidden">8269</span>
<span id="PrtTyp_0" class="GRPL_Hidden">NOTE</span>
<span class="FloatClear"></span>
</div>

Asp.net代码:

Public Sub TestSample()

    Dim wrkListString As String = C.AC("List")

    Dim wrkDocument As IHTMLDocument2 = New HTMLDocumentClass()
    wrkDocument.write(wrkListString)
    wrkDocument.close()

    Dim wrkAllElements As IHTMLElementCollection = wrkDocument.body.all

    Dim ws As String = ""
    Dim wrkType As String = ""
    Dim wrkStyle As String = ""
    Dim wrkId As String = ""
    Dim wrkClass As String = ""

    For Each wrkElem In wrkAllElements

        wrkType = wrkElem.GetType().ToString
        wrkId = wrkElem.id
        wrkClass = wrkElem.className
        wrkStyle = wrkElem.Style.ToString

        ws = wrkType & " , " & wrkId & " , " & wrkClass & " , " & wrkStyle & " , "

        Debug.Print(ws)
    Next

End Sub

调试输出:

mshtml.HTMLDivElementClass , GLGV , GLVG1 , System.__ComObject , 
mshtml.HTMLDivElementClass , GLGV_PRTS_0 , GLGVOuterRow , System.__ComObject , 
mshtml.HTMLSpanElementClass , ExtID01_0000 , ExtID01Label , System.__ComObject , 
mshtml.HTMLSpanElementClass , Note01 , Note01 , System.__ComObject , 
mshtml.HTMLSpanElementClass , Main01 , MainTextAll , System.__ComObject , 
mshtml.HTMLSpanElementClass , OTLID_0 , GRPL_Hidden , System.__ComObject , 
mshtml.HTMLSpanElementClass , OTLParID_0 , GRPL_Hidden , System.__ComObject , 
mshtml.HTMLSpanElementClass , PrtTyp_0 , GRPL_Hidden , System.__ComObject , 
mshtml.HTMLSpanElementClass ,  , FloatClear , System.__ComObject , 

我没有从 span id="Main01"中看到详细的样式,只有 "System.__ComObject"

任何有关如何获取详细内联样式字符串的帮助将不胜感激。谢谢!

最佳答案

wrkElem 的 Style 属性是一个 IHTMLStyle object所以你会想要使用 cssText property用于检索样式文本的 IHTMLStyle 对象。

所以现在要实现这个信息,改变这个:

wrkStyle = wrkElem.Style.ToString

对此:

wrkStyle = wrkElem.Style.Csstext

关于html - vb.net 获取 HTML 元素的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27672887/

相关文章:

javascript - 在 onClick 行之后给行颜色并请求其他页面并保持颜色更改

html - CSS 居中一个位于覆盖层之上的 div

c# - 如何在 LINQ 查询中从字典获取值到新对象

c# - 仅显示基于配置的指定属性

.net - 如何使用 MouseMove 事件在面板内移动标签?

php - 删除父目录和所有子文件然后重定向

javascript - 将鼠标悬停在提交按钮上时如何更改整个主体背景颜色?

c# - 为每个循环创建 XName.Get In

asp.net - 调试时观察 session 内容

asp.net - Facebook 游戏开发 - .NET - 哪种架构?