【问题标题】:NSScanner parsing html into a plistNSScanner 将 html 解析为 plist
【发布时间】:2011-01-14 06:36:04
【问题描述】:

问题:这是将 HTML 解析为 plist 的合适方法吗?

我需要从以下 html 中提取信息。 HTML 始终采用这种风格。 HTML 的第一块是部分标题,第二部分是部分内容。这些部分可以有任意数量的内容。

这是 HTML。

<td class="boxcontainer">
<div class="">
  <div class="titlebox" id="">
  <div class="titlebox-title">
    <span class="widget"><a href="#" 
 onclick="return rollup('TitleBox--_index.html------MjUgbmV3ZXN0IHVub3duZWQgdGlja2V0cw==---0');" 
 title="Toggle visibility"></a>
 </span>
    <span class="left">
       <a href="/Search/Results.html?Format='%3Ca%20href%3D%22%2FTicket%2FDisplay.html%3Fid%3D__id__%22%3E__id__%3C%2Fa%3E%2FTITLE%3A%23'%2C%20'%3Ca%20href%3D%22%2FTicket%2FDisplay.html%3Fid%3D__id__%22%3E__Subject__%3C%2Fa%3E%2FTITLE%3ASubject'%2C%20QueueName%2C%20ExtendedStatus%2C%20CreatedRelative%2C%20'%3CA%20HREF%3D%22%2FTicket%2FDisplay.html%3FAction%3DTake%26id%3D__id__%22%3ETake%3C%2Fa%3E%2FTITLE%3A%26nbsp%3B'%20&Order=DESC&OrderBy=Created&Query=%20Owner%20%3D%20'Nobody'%20AND%20(%20Status%20%3D%20'new'%20OR%20Status%20%3D%20'open')">25 newest unowned tickets</a></span>
    <span class="right">
 <a href="/Prefs/Search.html?name=RT%3A%3AAttribute-2">
 Edit</a>
    </span>
  </div>
  <div class="titlebox-content " id="TitleBox--_index.html------MjUgbmV3ZXN0IHVub3duZWQgdGlja2V0cw==---0">



<table border="0" cellspacing="0" cellpadding="1" width="100%" class="ticket-list"><tr class="collection-as-table">
<th class="collection-as-table">#</th><th class="collection-as-table">Subject</th><th class="collection-as-table">Queue</th><th class="collection-as-table">Status</th><th class="collection-as-table">Created</th><th class="collection-as-table">&nbsp;</th></tr>
<tr class="oddline" >
<td class="collection-as-table" align="right"><a href="/Ticket/Display.html?id=19773">19773</a></td>
<td class="collection-as-table" ><a href="/Ticket/Display.html?id=19773">Web form help request: IT-Email Problem</a></td>
<td class="collection-as-table" >General</td>
<td class="collection-as-table" >new</td>
<td class="collection-as-table" >2 days ago</td>
<td class="collection-as-table" align="right"><a href="/Ticket/Display.html?Action=Take&amp;id=19773">Take</a></td>

我的计划是使用 NSScanner 找到“widget”,然后找到“href=",然后找到下一个“>”并捕获“

一遍又一遍地重复,直到我再次找到“小部件”:{ 找到下一个“href="并转到下一个">”捕获“

转到下一个“href="转到">”在“

我还没有开始编写此语言,因为我是这种语言的新手,并且我正在尝试提出一个有意义的真正计划。这有意义吗?

【问题讨论】:

  • HTML不能用正则表达式解析,所以别想NSScanner能正常工作...
  • 有人有什么建议吗?如果我将文件加载到字典中怎么办。我如何能够逐行测试一组字符并记住我在哪一行?

标签: html parsing plist


【解决方案1】:

您需要一个合适的解析器来可靠地解析 HTML 文档。要将 HTML 文档转换为属性列表 (plist),最好使用 SAX 解析器。 NSXMLParser 是一个 SAX 解析器,包含在 MacOS 和 iOS SDK 中。

我发现this post 在识别objective-c 的XML 解析器方面很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2016-01-18
    • 2018-06-14
    相关资源
    最近更新 更多