我想设置一个 xml 提要轮询系统,它将每小时从给定的 URL 下载一个 xml 提要并检测提要是否已更改。如果有,它需要做一些事情。
我怎样才能有效地做到这一点?我要提取的提要里面有数千个项目,每个项目可能都有相当多的数据。
我希望能够检测到任何新数据/项目并将其保存到数据库中。
我希望能够检测到任何修改过的数据/项目并相应地更新数据库。
我希望能够检测到任何已删除的数据/项目并相应地更新数据库。
项目的顺序对我来说并不重要,所以如果顺序发生变化但没有其他变化,那么我们可以说提要是相同的。
我见过一些人提到对项目和整个提要进行散列处理以与之前下载的提要进行比较。如果有很多项目,这可能需要很长时间。
是否有一种简单的方法可以对上次下载的提要和新提要进行比较,然后以某种方式删除所有相同的项目?也许然后检查剩下的项目并进行比较?
我不确定正确的方法是什么。任何建议将不胜感激。
我将要提取的类似提要的示例是:
<properties>
<property>
<location>
<unit-number>301</unit-number>
<street-address>123 Main St</street-address>
<city-name>San Francisco</city-name>
<zipcode>94123</zipcode>
<county>San Francisco</county>
<state-code>California</state-code>
<street-intersection>Broadway</street-intersection>
<parcel-id>359-02-4158</parcel-id>
<building-name>The Avalon</building-name>
<subdivision></subdivision>
<neighborhood-name>Marina</neighborhood-name>
<neighborhood-description>The Marina is a neighborhood on the Northern part of San
Francisco</neighborhood-description>
<elevation>10</elevation>
<longitude>-70.1200</longitude>
<latitude>30.0000</latitude>
<geocode-type>exact</geocode-type>
<display-address>yes</display-address>
<directions>Take 101 North to Lombard St. Make a left on Lombard and 3rd right
onto Main. 123 is at the end of the block on the right. </directions>
</location>
<details>
<listing-title>A great deal in the Marina</listing-title>
<price>725000</price>
<year-built>1928</year-built>
<num-bedrooms>3</num-bedrooms>
<num-full-bathrooms>2</num-full-bathrooms>
<num-half-bathrooms>1</num-half-bathrooms>
<num-bathrooms></num-bathrooms>
<lot-size>0.25</lot-size>
<living-area-square-feet>1720</living-area-square-feet>
<date-listed>2010-06-20</date-listed>
<date-available></date-available>
<date-sold></date-sold>
<sale-price></sale-price>
<property-type>condo</property-type>
<description>Newly remodeled condo in great location.</description>
<mlsId>582649</mlsId>
<mlsName>SFAR</mlsName>
<provider-listingid>258136842</provider-listingid>
</details>
<landing-page>
<lp-url>http://www.BrokerRealty.com/listing?id=123456&source=Trulia</lp-url>
</landing-page>
<listing-type>resale</listing-type>
<status>for sale</status>
<foreclosure-status></foreclosure-status>
<site>
<site-url>http://www.BrokerRealty.com</site-url>
<site-name>Broker Realty</site-name>
</site>
ETC..