获取数据的xpath以特定字符或字符串开头

时间:2016-04-16 10:49:51

标签: html xpath

我需要从以下代码中提取某些文本元素。

<div class="inhalt-links">
    <h2>
        Deutsche Verkehrswacht
        <br>
        Verkehrswacht Dortmund e. V.
        <br>
    </h2>
    <h3>
        Standnummer:&nbsp;
            <span style="font-weight: normal;">4.E08</span>
    </h3>
    <div class="clear"></div>
    <br>
    Benediktinerstraße 82
    <br>
    44287&nbsp;Dortmund
    <br>
    Deutschland
    <br>
    <br>
    Tel.:+49 231 447687
    <br>
    Fax:+49 231 447136
    <br>
    E-Mail:info@verkehrswacht-dortmund.de
    <br>
    <a href="http://www.verkehrswacht-dortmund.de" class="url" target="_blank">www.verkehrswacht-dortmund.de</a>
    <br>
    <div class="social"></div>
    <br>
</div>

为了提取电话:+49 231 447687,我可以使用div[@class='inhalt-links']/text()[4]。而对于其他细节,如传真,电子邮件,网站,我只需要更改text()元素的位置编号。但是,这些文本的位置有时会有不同的顺序,如下面的代码所示:

<div class="inhalt-links">
    <h2>
        DEW21
        <br>
    </h2>
    <h3>
        Standnummer:&nbsp;
            <span style="font-weight: normal;">4.B56</span>
    </h3>
    <div class="clear"></div>
    <br>
    Günter-Samtlebe-Platz 1
    <br>
    44135&nbsp;Dortmund
    <br>
    Postfach:104141
    <br>
    44041&nbsp;Dortmund
    <br>
    Deutschland
    <br>
    <br>
    Tel.:+49 231 544-0
    <br>
    Fax:+49 231 544-1130
    <br>
    E-Mail:vertrieb@dew21.de
    <br>
    <a href="http://www.dew21.de" class="url" target="_blank">www.dew21.de</a>
    <br>
    <div class="social"></div>
    <br>
</div>

xpath div[@class='inhalt-links']/text()[4]将选择文字“44041 Dortmund”而不是电话:+49 231 544-0。是否有像"div[@class='inhalt-links']/text[starts with "Tel.:"]"这样的xpath来选择Tel.:元素?

1 个答案:

答案 0 :(得分:1)

  

&#34;是否有像Sub GetContentCallback(control As IRibbonControl, _ ByRef XMLString) ' Callback get the selected datbases Dim lngDummy As Long Dim strDummy As String Dim strContent As String strDummy = "<menu xmlns=""http://schemas.microsoft" strDummy = strDummy & ".com/office/2006/01/customui"">" For lngDummy = 0 To 5 strContent = strContent & _ "<checkBox id=""MyDynaCheckbox" & lngDummy & _ """ label =""Dynamic Item" & _ lngDummy & """/>" Next strDummy = strDummy & strContent & " </menu>" XMLString = strDummy End Sub 这样的xpath来选择"//div[@class='inhalt-links']/text[starts with "Tel.:"]"元素?&#34;

当然,请尝试这种方式:

Tel.:

XPath返回文本节点 - 而不是元素 - 在删除前导和尾随空格*之后,以关键字//div[@class='inhalt-links']/text()[starts-with(normalize-space(), 'Tel.:')] 开头。

*)参考Tel.:正在做的更精确:

  

normalize-space()函数从字符串中去除前导和尾随空格,用单个空格替换空白字符序列,并返回结果字符串。 [Mozilla Developer Network]