请教如何用asp来生成一个xml文件?

jhlcss 2001-10-09 10:58:59
...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
karma 2001-10-09
  • 打赏
  • 举报
回复
<%
response.contenttype="text/xml"
response.write "<books><book><author>A</author></book></books>"
%>
蒋晟 2001-10-09
  • 打赏
  • 举报
回复
The DOM
As I learned more about the Internet Explorer 5 XML parser, I found that my understanding of the parser depended on my understanding an interface established by the W3C: the Document Object Model (DOM). This model exposes an XML document as a tree structure composed of nodes. The Internet Explorer 5 XML component works with XML documents through four basic interfaces: the Document, the Node, the NodeList, and the NamedNodeMap. Although the foundation of any XML DOM instance is the Document, the Node interface is the one you'll probably find yourself using the most.

A node is a discrete piece of the XML tree structure and can be one of many NodeTypes, listed below. These NodeTypes are enumerated constants; the numeric value of each constant is in parentheses next to the name. NodeTypes that are beyond the scope of this article are noted with an asterisk (*). XML snippets that correspond to each enumerated NodeType are in bold.

NODE_ELEMENT (1) <ELEMENT> … </ELEMENT>
NODE_ATTRIBUTE (2) <ELEMENT ATTRIBUTE="This is a node attribute" />
NODE_TEXT (3) <ELEMENT>This is Node text.</ELEMENT>
NODE_CDATA_SECTION (4) * <ELEMENT><![CDATA[a CDATA section is used to escape a block of text that would otherwise be recognized as markup.]]></ELEMENT>
NODE_ENTITY_REFERENCE (5) * <Element>&ent;</Element>
NODE_ENTITY (6) * <!ENTITY % textgizmo "fontgizmo">
NODE_PROCESSING_INSTRUCTION (7) * <?XML version="1.0" standalone="yes" ?>
NODE_COMMENT (8) * <!-- This is a comment -->
NODE_DOCUMENT (9) <XMLROOTELEMENT> …(entire xml tree) … </XMLROOTELEMENT>
NODE_DOCUMENT_TYPE (10) * <!DOCTYPE INVOICE SYSTEM "http://www.xml.com/product.dtd">
NODE_DOCUMENT_FRAGMENT (11) * <ELEMENT> … (subtree) … </ELEMENT>
NODE_NOTATION (12) * <!NOTATION gif SYSTEM "viewer.exe">


* Not covered in this article. All NodeTypes are listed for reference only.

The NodeTypes that you will encounter most often in XML are NODE_ELEMENT, NODE_ATTRIBUTE, NODE_TEXT, NODE_DOCUMENT, and NODE_CDATA_SECTION. Figure 1 shows another view of some of the preceding NodeTypes, this time in the context of a full XML document.



Figure 1. NodeTypes within an XML document

You Have to Walk Before You Can Fly
After fully understanding the DOM, I rolled up my sleeves and began building my sample application, X-Ray. X-Ray demonstrates four general tasks you might want the to do using the Internet Explorer 5 XML parser:

Walk the XML tree.


Access elements of the DOM.


Add elements and attributes to an .xml file.


Apply XSL pattern strings to select specific nodes within an .xml file.
Even if an XML document arrives on my shores via a transmission over the Web, it will need to be parsed—server-side—into something meaningful for my enterprise. XML is exchangeable, reusable, transformable; the X-Ray application demonstrates how the Internet Explorer 5 XML parser makes it easy to find relevant information, do something useful with it, and alter or add information.

The Bones of the X-Ray Sample
Figure 2 is an overview diagram of the interface for the sample application, X-Ray.



Figure 2. The interface for the X-Ray sample

The sample application allows users to double-click element nodes to walk up a level to the parent node or down a level to the next set of child nodes. Although many XML applications, such as Microsoft's XML Notepad, use a file tree-style interface, this two-window parent/children view of the XML document more closely mirrors the logic used behind the scenes to navigate the DOM.

In the sample X-Ray application, I decided to walk the tree without a net. I decided that I would use the current element node as my context for walking the tree. I would not track how deep under the document root I was or in what order the nodes were traversed to get to the current element. If I had tracked the context within the document, I would have a record of clicks, which would tell me how far currNode is from the documentNode, the parent's ancestry, where in the list of each level's siblings each parent lives, and more. I chose not to track this so as to challenge myself to create a generic code base that could be applied to any XML document.

Being generic is not without a price: When a user selects an element, X-Ray must look to the selected element's parent node in order to determine which node, among a collection of sibling nodes, was actually selected. Nodes, as I just described, are not always element nodes. For example, if the second node in a list of sibling element nodes is selected, it may not be the second node in its parent's childNodes collection. The first node could be a NODE_TEXT type node, the second node may be a NODE_ATTRIBUTE type, the third may be a NODE_ELEMENT, and the fourth may be the second NODE_ELEMENT underneath the parent node. In this case, the second node in the NODE_ELEMENT list would be the fourth node in the parent node's childNodes collection. As you might guess, because the UI only displays element nodes and doesn't keep track of them in relation to all the other types of nodes, I had a bit of extra work to do.

The Code Behind the Interface
The first step to walking the tree is to create a new MSXML DOMDocument. In Visual Basic, this is done like so:

Dim xDoc As New DOMDocument
...
' load the DOMDocument from a file
' Note: You could also use the Load method to load a
' remote XML file using
' xDoc.Load("http://www.XMLHOST.com/XMLFILE.xml")
' however, in order to process remote files you would
' need an additional function to check
' the document's readyState property.
xDoc.Load (GetXML.Text1.Text)

' we are at the root node. refer to the document element
' xDoc should only have one child, the root element
...
Set currNode = xDoc.firstChild
...


Conceptually, at any point in the XML tree, X-Ray keeps track of where it is by means of a single node, currNode. The Internet Explorer 5 XML parser provides enough contextual information from a single node for you to be able to walk the tree, including the answers to the following questions:

What kind of node is currNode? (currNode.nodeType returns the enumerated nodeType)


Does this node have any children? (currNode.hasChildNodes returns a Boolean True or False)


What is the parent node's nodeType? (currNode.parentNode.nodeType returns the enumerated nodeType)
For this sample, these three questions provide enough context to be able to navigate the entire XML tree. If the parent nodeType is a NODE_DOCUMENT (9), the currNode is at the top of the XML tree. If the currNode has children, I store them all in an IXMLDOMNodeList collection—a collection of IXMLDOMNode objects. Because X-Ray displays all the nodeType=Element children in the Child Node window, this collection makes coding a little more convenient because I can access the child nodes directly in the list rather than having to constantly traverse down through the currNode's childNodes NodeList. The same is not true for the currNode's siblings, which is why the application needs to look at the currNode's parent every time a user wants to do something in the left-hand Element window.

Whew! I have to keep track of a big family of parents, siblings, and children. Once you start using the component, you'll see that it's simple to manage these relationships.

The collection of currNode's childNodes, stored in the IXMLDOMNodeList object currNodeList, makes it very simple to move up and down the tree. I do this with two small functions (the meat of each function is in bold):

Private Function WalkDownDOM()
...

Set currNode = currNodeList(ChildNodesList.ListIndex)
Set currNodeList = currNode.childNodes

' call functions to populate the listboxes in the interface.
' Because what was a child is now the parent, X-Ray will make
' this the selected element and populate the ChildNodesList
' accordingly.
FillRootNodesList
FillChildNodesList

End Function

Private Function WalkUpDOM()
...
If currNode.parentNode.nodeType = NODE_DOCUMENT Then
' it's the root
MsgBox ("You are at the top of the XML tree.")
Else
' go up the tree
Set currNode = currNode.parentNode
Set currNodeList = currNode.childNodes
' call function to populate Element listbox
' in the interface. Because no elements are selected,
' the ChildNodesList will not be populated right now.
FillRootNodesList
End If
End Function

Give Me Some Values: Getting Values from the DOM
Another major part of the X-Ray sample involves displaying the contents of the XML tree as you walk through it. This is slightly more complicated than moving the currNode around because we not only want to show the currNode's children, we also want to show the currNode's siblings. The following chart shows the strategy used to get all the siblings of the currNode.



The following function spins through the siblings of the currNode by walking up to the parentNode and then back down through all the parentNode's childNodes. When it comes to a NODE_ELEMENT type node, it adds the node name to the list box called RootNodes (in the UI, this is the left-hand Elements window).

Private Function FillRootNodesList()

...

For i = 0 To currNode.parentNode.childNodes.length - 1
If currNode.parentNode.childNodes(i).nodeType = _
NODE_ELEMENT Then
' don't show non- NODE_ELEMENTS
' add to RootNodes listbox
RootNodes.AddItem _
(currNode.parentNode.childNodes(i).nodeName)
End If
Next
End If

FillChildNodesList

End Function

The Internet Explorer 5 XML parser allows an alternate way of viewing a node's siblings: the nextSibling and previousSibling node properties. For my generic walk through an XML DOMDocument, these properties were not my first choice because I don't know which sibling in the list the currNode is. It may be the first, it may be in the middle, or it may be at the end; for data fidelity I wanted the application to show the nodes in the same sequence as the original document. If I were to use the nextSibling and previousSibling properties, I might have to back up, turn around, and walk to the other end of the Sibling list. Starting from the parentNode is clean and you'll get the nodes in the proper sequence, as long as you are sure to check for the top of the document!

The attributes and values for the selected currNode and the selected childNode in the Child Node window are displayed from the subroutine RootNodes_Click(). The largest task for this routine is to match the selected list item in the UI to the corresponding child node of the parent. Because the parent has more child nodes than the list box displays, a variable called selectedIndex must be set to the index of the selected element node in the parent's childNodes NodeList. Because the application does not explicitly associate the displayed items and the childNodes collection, it must do some fancy footwork at the time of the click.

Private Sub RootNodes_Click()
...
selectedIndex = RootNodes.ListIndex
For p = 0 To currNode.parentNode.childNodes.length - 1
If currNode.parentNode.childNodes(p).nodeType _
<> NODE_ELEMENT Then
' to account for invisible non-Element nodes
selectedIndex = selectedIndex + 1
End If
Next
...
Set currNode = currNode.parentNode.childNodes(selectedIndex)
Set currNodeList = _
currNode.parentNode.childNodes(selectedIndex).childNodes
' Call the function to show childNodesList in the interface
FillChildNodesList
...
End Sub

The preceding subroutine also takes care of displaying the selected node's text, if it exists, and the node's attributes. The overhead of having to go up to the parent to track down which node matches the list box item is a byproduct of the application's design. If all nodeTypes were listed, there would be no need to set the selectedIndex; the RootNodes.ListIndex would suffice. I could have saved myself some trouble if I'd kept an array to keep track of the nodes that are visible and those that are not from the time that the items are added to the list box.

Once we have found the selectedIndex, we can look at the properties of the selected node:

Nodeinfo.Text = "<" + currNode.parentNode.childNodes(selectedIndex).nodeName + " ... >"

If an XML node has text between two tags, you may access the text with the currNode.Text interface. However, if that node has other child nodes that also contain text between tags, currNode.Text will return all of the child text as well. So, if you simply ask for the SOMETAG element's text in the following XML node, you'd probably want to get "this is some text", but instead you'd get "this is some text and more text":

<SOMETAG>this is some text
<CHILDELEMENT>and more text</CHILDELEMENT>
</SOMETAG>

To display the text only from the top element node (in the preceding example, SOMETAG), walk through all the childNodes of the selectedIndex node. The currNode.Text property gets all NODE_TEXT values together. By finding the specific NODE_TEXT child that is directly associated with currNode, you will retrieve only that node's text; in this example, elemTxt would be set to "this is some text" if currNode is the element node SOMETAG:

For j = 0 To currNode.childNodes.length - 1
If currNode.childNodes(j).nodeType = NODE_TEXT Then
elemTxt = currNode.childNodes(j).Text
End If
Next

Tag! You're It! Adding Tags and Attributes
One of the best things about the new Internet Explorer 5 XML parser is that .xml files can be manipulated directly—no more tacking tags and values together as a long string!

Adding tags is very simple. X-Ray's function fnAddChildElem is long because it must do some validation to make sure the chosen tag name is valid and because it must determine which tag to add the node to. Once you've done that, it's a piece of cake: Create a new node, append it to another NODE_ELEMENT, and you're done!

A modification of the X-Ray code shows the basic steps in creating a new node:

' Assumes: xDoc is an existing MSXML.DOMDocument
' currNode is a NODE_ELEMENT inside xDoc
' Append a new NODE_ELEMENT to currNode

Dim node1 As IXMLDOMNode

' This syntax--"element" instead of NODE_ELEMENT --
' works the same as the line after:
'---> Set node1 = xDoc.createNode("element", "NEWNODENAME", "")
Set node1 = xDoc.createNode(NODE_ELEMENT, "NEWNODENAME", "")
Set node1 = currNode.appendChild(node1)

Although the calling document, xDoc, does the job of creating the node, the node exists in the document without being attached to any other node—it has no parent. Once the node is appended to currNode using currNode's appendChild method, the node exists in a context inside xDoc.

Adding attributes is just as simple:

Create a new attribute.


Give the attribute some text.


Set the attribute using an existing node's setNamedItem method.
This simplified code shows how to add a new attribute to an existing element node:

' Assumes: xDoc is an existing MSXML.DOMDocument
' currNode is a NODE_ELEMENT inside xDoc
' Add a new attribute to currNode

Dim node1 As IXMLDOMAttribute
Dim node2 As IXMLDOMNode

' Create a new attribute in the document
Set node2 = xDoc.createAttribute("NewAttrName")
node2.Text = "Attribute value"
' Associate that attribute with an ELEMENT_NODE
Set node1 = currNode.Attributes.setNamedItem(node2)

Now currNode has a new attribute that looks like this: NewAttrName="Attribute value".

When you've added all your tags and attributes, you can save your .xml file back to disk using this method:

xDoc.save (destination)
Querying the DOM
The X-Ray sample uses the IXMLDOMDocument getElementsByTagName() method to return a collection of nodes, in the form of an IXMLDOMNodeList, filtered by tag name. The getElementsByTagName method uses XSL patterns for queries, so you can either search by a tag name, such as "PRODUCT," or you may do scoped queries, such as "PRODUCT/FEATURES."

For example, if a node named "CLASS" was being used to describe both COMPANY and PRODUCT classes, a generic query for "CLASS" wouldn't suffice. Consider this example:

<?xml version="1.0"?>
<COMPANY>KomputerSource
<CLASS>Retail
<TYPE>Computer Store</TYPE>
</CLASS>
<PRODUCT>
<CLASS>Printer
<TYPE>dot matrix</TYPE>
</CLASS>
...
</PRODUCT>
</COMPANY>

Both the <COMPANY> and the <PRODUCT> contain <CLASS> elements. XSL pattern queries allow you to search for just the CLASS you want.

XML Is for Developers On and Off the Web
Armed with my trusty Internet Explorer 5 XML parser, I can share my data with others in a standard way. I can write generic applications that convert data into presentations. I can transform data into variable values for my server-side applications. I can even transform the data into different XML structures. XML is a meta-language that may be used for transferring data, but the real magic happens when the data contained inside the XML is morphed into something useful. That magic can happen in an Internet Explorer 5 browser or through an Internet Explorer 5 XML-enabled server-side application.

Steve Land is Senior Developer, Commerce Initiatives Lead at Corbis (www.corbis.com), where he develops commerce Web sites. His head is filled with metadata.

jhlcss 2001-10-09
  • 打赏
  • 举报
回复
没人懂吗?
一个牛人提供的GIS源码(很好 下面文字非本人所写,文件提到的下载的东西我全部放包里了。 最后的礼物:校园多媒体系统和校园WEBGIS系统 为什么说是最后的礼物,大概是因为我突然想这个blog不更新了。为什么呢?可能是今天晚上喝多了酒,呵呵,原因等下一篇中也许会阐述,同时我会对这个blog的文章等做个总结。其实,这两个东西至少我暂时是不大想放出来的,只是觉得反正这里也不更新了,仅仅将这些东西作为礼物吧,再说毕竟这些东西太过于菜菜了。还是先来介绍下最后的两个礼物吧: 校园多媒体系统: 这个大概是今年过年后做的东西了,是给师弟做毕业设计用的。应该讲这也仅仅是电子地图查询系统的更新而已,没有太大的特色,只是做了些比较花的功能而已。 特色一:系统采用了双重数据库,对于如果无法连接SQL Server数据库的情况将提供备用的ACCESS数据库支持。 特色二:系统采用了实时在线更新的方法对软件进行升级,升级仅仅需要设置好服务端以及更新文件列表等即可。 特色三:界面上有所创新,吸取Google的WEB地图的界面,对部分控制条进行显示和隐藏。可以看我以前的截图,做了个界面,请大家PP http://www.cnblogs.com/Tangf/archive/2006/03/16/351640.html 特色四:简单的加密方式也可以学习下。这个加密方式可以对移植性进行控制。 特色五:移植性强,许多东西没有写死,只需要改变设置文件、启动画面文件、地图文件和数据库文件即可成为一套全新的系统。 开发环境:Visual Basic 6.0,MAPX5.02中文版,ACCESS,SQL SERVER 2000,AutodeskExpressViewe3.1、Windows Media Player 9.0等。 下载地址:http://www.cnblogs.com/Files/Tangf/Campus_Multimedia_Infomation_System_Source.rar 压缩包中为源代码和生成的程序,同时还赠送了一个基于SF6的MAPX打包文件以及整个校园的地图文件,提供了开放环境中需要的插件支持文件(System目录下),同时由于文件大小原因,删除了许多Img目录下的图片并且在数据库中删除了部分Img记录(不然会出错),仅保留了1号楼的图片供参考。 相关或参考文章: 电子地图查询系统_v1.0_源代码(VB6+MAPX5) http://www.cnblogs.com/Tangf/archive/2006/02/15/331375.htmlGoogle ┕电子地图查询系统源代码:http://www.cnblogs.com/Files/Tangf/MapSearch_Source.rar 用SetupFactory打包MapX(带打好的包和打包文档以及录像) http://www.cnblogs.com/Tangf/archive/2006/02/05/325842.html ┕打包以及文档和录像:http://www.cnblogs.com/Files/Tangf/Mapx_Pack.rar 再谈MAPX打包以及MAPX的安装 http://www.cnblogs.com/Tangf/archive/2006/05/31/414361.html 校园WEBGIS: 这个应该是05年的时候做的毕业设计,用超图的Supermap IS 2003+SQL Server 2000建立的一个比较的简单的系统,只是玄乎了下就变的有点意思了,甚至也有点学习或者创新的意思。 加上上次发布的论文部分,这样整个系统也算是补全了。原来论文部分请见:校园WebGIS开发与实践(论文部分) http://www.cnblogs.com/Tangf/archive/2006/01/13/316918.html 特色一:提出了地图接口的概念(其实当时的想法是将网络上的所谓企业标注移植到了这个系统上,只是这个功能免费提供给了学校的部门使用)。 特色二:部分搜索功能是通过搜索SQL输出XML来实现。 特色三:系统已经详细到每个楼房楼层的办公室以及办公室内的电话和教师名单、教学楼的班级以及课程表、宿舍的成员组成联系方式等。 特色四:空间数据库和属性数据库通过SQL Server的视图功能实现关联。 开发环境:Supermap Desktop 2003(地图编辑工具),Supermap IS 2003(GIS服务端),ASP+SQL Server 2000(开发语言和数据库环境),IIS 5.0(WEB服务端),AutodeskExpressViewe3.1(Autodesk公司发布的浏览DWF文件的的客户端插件)等。 安装方法请见论文的附录部分,请不要再询问如何安装。 由于当时将每个楼层平面图的CAD数据也同时存入了SQL Server,所以导致数据库文件过于庞大,大概90M多,经过压缩大概21.8M左右。由于文件过大没有地方存放,所以这部分也不提供。所以可能会导致系统功能无法实现。数据库不提供,请不要索取。 下载地址:http://www.cnblogs.com/Files/Tangf/Campus_WebGIS_Source.rar 压缩包中为WEB主程序,以及答辩用的演讲稿。 相关或参考文章: 校园WebGIS开发与实践(论文部分) http://www.cnblogs.com/Tangf/archive/2006/01/13/316918.html ┕校园WEBGIS的论文下载:http://www.cnblogs.com/Files/Tangf/Campus_WebGIS.rar 由于各种原因,压缩包中已经删除了无关紧要的楼层平面图的DWF部分。同时由于文件大小原因,AutodeskExpressViewe3.1程序也没有提供,请从网上下载。 特别说明:两个程序中已经提供了比较完整的数据和代码,可以复制、修改、传播,传播情保证文件完整性,并且包含Readme文件同时注明出处,但禁止用于商业用途。谢谢。 但愿我的礼物能够给您带来一些帮助。 ==================================================================== 公告:Rover's Official Blog停止更新 想了几天,终于决定写这么一个公告了。并不是因为写些东西太累或者太占时间而停止了更新,也许就如同前文说是因为今天喝多了酒(呵呵,玩笑),也许如同MSN副标题所言:严重的压力和抑郁,强烈的人格分裂和精神分裂,等待崩溃(呵呵,又一个玩笑)。可能是觉得写的东西没什么水准,并且也不能时常的更新,加上个人感觉自己技术的下降(呵呵,也许本来就没有什么技术),考虑甚多,终于作了这么个决定:Rover's Official Blog停止更新 同时停止更新的是Rover's GIS Blog,是3snews上面的Blog,不过上面的基本上也都是本站的复制。生活类Blog会不定时更新,停靠在了Space和新浪,由于关系自己暴露隐私等问题,所以本文不详细提供连接地址。从元旦开博到现在也已经八个月的时间了,发了40多篇的随笔和0篇的文章,非常开心能够在博客园作为我的主blog的停靠站,能够让我在这里结识这么多的朋友,并同他们交流,让我学到甚多、收益菲浅,非常的感谢博客园感谢大家。 也许我还会回来,说不定有一天我会发公告说本Blog重新开始更新,很有可能的事情。希望这段日子能够安静些,能够思考更多些,能够明确些方向,能够做出些实质性的东西,能够提高些自身的技术能力。非常的希望,不知道能否实现。 也许我也会偶然的更新一下本日志,大概是在有东西发布或者有好东西同大家分享的情况下吧。不过这篇日志就置顶了吧。 正准备经营的东西,希望能够得到大家的帮助,非常的感谢: www.gpsplayer.cn:GPS玩家。GPS资讯类网站。类似一个简单的新闻系统,加上一些简单的留言板等等功能,可能会添加一些Gmap API开发类的内容。 www.wikish.cn:维基上海。有了点想法和思路,但暂时由于技术能力等原因无法实现。 其他:还有两个玉米没有想好(呵呵)。 由于个人比较自私,所以想法上即使有所创意也不大会和大家分享(请见谅),加上自身没有技术,所以个人基本上是宁烂也不实现或者让别人实现(是有点自私了)。请原谅我的自私,Google是有创意的,但他的技术壁垒是他人所无法逾越的,而我即使有创意也没有任何技术壁垒,所以不讲了。加上大陆地区太多的炮制太另人失望了(去年非常红火的百万首页,在大陆地区做的烂的一塌,只会炮制没有几个是有创意或者在人家创意的基础上增加自己创意的,唉)。 非常的希望大家能够给我意见或者建议,对大家提供的帮助非常的感谢。 如果您对这一段有想法或者其他愿意和我交流,那么请给我mail。谢谢。 我的联系方式和需要注意的地方: E-mail:tfljh@163.com(基本上是每天晚上登陆一次) MSN:tfljh@msn.com(基本上是开机登陆,不过状态一般为忙碌,Mail会不定时登陆) Gmail:tangf2004@gmail.com(基本上是两三天登陆一次,Gtalk则不定时登陆了) QQ:65985498(基本上是每天晚上隐身登陆一次,并且一般在十分钟内关闭) 以后的联系通过E-Mail联系,谢绝一切的及时通讯工具,请尽量不要添加我为好友,包括QQ/MSN/Gtalk,如果您发的Mail足够的诚恳并且也足够的值得聊天的理由,那么我会添加你的。不希望通过聊天的方式来解决问题,聊了半天的问题最后做公安局调查户口的事情了(呵呵,说的严重了),或者说是聊了半天后就无聊了然后再也不聊了,多么的没有意思。我倒还是很愿意花上十分钟的时间来阅读您的Mail并将我知道的所答复给您。当然如果有邮件不回复,那么基本上我是不懂而无法回答或者觉得没有任何答复的价值,请多多的包涵。 以前写的部分日志以及提供的下载文件整理: 最后的礼物:校园多媒体系统和校园WEBGIS系统 http://www.cnblogs.com/Tangf/archive/2006/08/05/468257.html ┕校园多媒体系统源代码下载:http://www.cnblogs.com/Files/Tangf/Campus_Multimedia_Infomation_System_Source.rar ┕校园WEBGIS系统源代码下载:http://www.cnblogs.com/Files/Tangf/Campus_WebGIS_Source.rar Google卫星地图的URL计算 http://www.cnblogs.com/Tangf/archive/2006/07/23/457902.html 两点坐标间距离的算法以及验证 http://www.cnblogs.com/Tangf/archive/2006/07/23/457884.html 极索(Gsuo)推出新版地图采用Gmap设计思路 http://www.cnblogs.com/Tangf/archive/2006/07/23/457521.html 浅谈LBS(基于位置的服务) http://www.cnblogs.com/Tangf/archive/2006/07/17/452498.html MapBar地图更新啦 http://www.cnblogs.com/Tangf/archive/2006/07/13/450215.html 推荐一款软件:Global Mapper http://www.cnblogs.com/Tangf/archive/2006/07/11/448411.html 51ditu、清华地图以及Google地图 http://www.cnblogs.com/Tangf/archive/2006/07/02/440953.html 计算最近点和最近线段 http://www.cnblogs.com/Tangf/archive/2006/07/01/440311.html ┕最近点和最近线段算法示例代码(脱离MAPX5,VB6实现):http://www.cnblogs.com/Files/Tangf/neardis_new.rar Garmin Nuvi 350试用手记 http://www.cnblogs.com/Tangf/archive/2006/06/17/428045.html ┕全文下载(供转载专用):http://www.cnblogs.com/Files/Tangf/Nuvi350.rar MapBar中坐标的加密和解密(JS实现) http://www.cnblogs.com/Tangf/archive/2006/06/06/419124.html 发现一个SVG做的地图网站:ChinaQuest http://www.cnblogs.com/Tangf/archive/2006/06/04/417110.html boot.ini文件的修复 http://www.cnblogs.com/Tangf/archive/2006/06/04/416915.html 再谈MAPX打包以及MAPX的安装 http://www.cnblogs.com/Tangf/archive/2006/05/31/414361.html 寻找MapBar的地图切割方法 http://www.cnblogs.com/Tangf/archive/2006/05/28/411397.html ┕我自己切割的Mapbar地图,并且可以在本地运行:http://www.cnblogs.com/Files/Tangf/MapBar_My.rar 已知一点求最近点(问题请教) http://www.cnblogs.com/Tangf/archive/2006/05/28/411182.html ┕求最近点示例代码(基于MAPX5,VB6实现):http://www.cnblogs.com/Files/Tangf/neardis.rar 基于数据库的公交换乘算法(一点思路一点问题) http://www.cnblogs.com/Tangf/archive/2006/05/28/411065.html MapInfo/ArcInfo交流(提问解答,不定时更新) http://www.cnblogs.com/Tangf/archive/2006/05/09/395489.html (收集)Shape转KML工具(更新:Google正式收购SketchUp) http://www.cnblogs.com/Tangf/archive/2006/04/26/386092.html ┕两个SHape转KML工具:http://www.cnblogs.com/Files/Tangf/shape2kml.rar 地图投影 http://www.cnblogs.com/Tangf/archive/2006/04/17/377638.html 容器透明(如PictureBox) http://www.cnblogs.com/Tangf/archive/2006/04/05/367885.html Google地图切割以及类似Google的开源API http://www.cnblogs.com/Tangf/archive/2006/03/29/362110.html 获取字符串中的指定位置的子字符串 http://www.cnblogs.com/Tangf/archive/2006/03/25/358311.html 做了个界面,请大家PP http://www.cnblogs.com/Tangf/archive/2006/03/16/351640.html [存点资料]车载导航电子地图走向标准化 http://www.cnblogs.com/Tangf/archive/2006/03/04/342733.html [ZT]谈谈 wiki 的缺点 http://www.cnblogs.com/Tangf/archive/2006/03/01/340725.html [转贴]Web地图服务:GIS走近你我 http://www.cnblogs.com/Tangf/archive/2006/02/23/336493.html 算我给Google本地和E都市做个广告吧 http://www.cnblogs.com/Tangf/archive/2006/02/18/333076.html 电子地图查询系统_v1.0_源代码(VB6+MAPX5) http://www.cnblogs.com/Tangf/archive/2006/02/15/331375.htmlGoogle ┕电子地图查询系统源代码:http://www.cnblogs.com/Files/Tangf/MapSearch_Source.rar 地图的配色问题(以及MapBar和51ditu) http://www.cnblogs.com/Tangf/archive/2006/02/12/329162.html [分享]上海市样图 http://www.cnblogs.com/Tangf/archive/2006/02/08/327310.html ┕上海市样图:http://www.cnblogs.com/Files/Tangf/Map_SH.rar 用SetupFactory打包MapX(带打好的包和打包文档以及录像) http://www.cnblogs.com/Tangf/archive/2006/02/05/325842.html ┕打包以及文档和录像:http://www.cnblogs.com/Files/Tangf/Mapx_Pack.rar ArcGIS9、MapObject2.2和ArcExplorer2.0连接ArcSDE9.0问题 http://www.cnblogs.com/Tangf/archive/2006/01/26/323698.html MapBar和MapInfo中的比例尺[更新:MapBar比例尺是正确的] http://www.cnblogs.com/Tangf/archive/2006/01/24/322854.html MapBar研究(百度地图中的JS部分) http://www.cnblogs.com/Tangf/archive/2006/01/22/321756.html ┕本地浏览,调用远程图片:http://www.cnblogs.com/Files/Tangf/MapBar_baidu.rar 浅谈WEBGIS运用栅格地图实现原理[更新:Google Maps带来的新型WebGIS设计模式] http://www.cnblogs.com/Tangf/archive/2006/01/14/317327.html 校园WebGIS开发与实践(论文部分) http://www.cnblogs.com/Tangf/archive/2006/01/13/316918.html ┕校园WEBGIS的论文下载:http://www.cnblogs.com/Files/Tangf/Campus_WebGIS.rar MapInfo中按区域分割地图的方法(带MapBasic方法) http://www.cnblogs.com/Tangf/archive/2006/01/13/316363.html MIFtoSHP通用转换工具 http://www.cnblogs.com/Tangf/archive/2006/01/06/312654.html ┕MIFtoSHP通用转换工具:http://www.cnblogs.com/Files/Tangf/MIFtoSHP.rar MIFtoTAB and TABtoMIF(MIF和TAB互转小工具) http://www.cnblogs.com/Tangf/archive/2006/01/01/309375.html ┕MIFandTAB互转工具:http://www.cnblogs.com/Files/Tangf/MIFandTAB.rar 『浪人|努力』唐丰,Rover.Tang 2006.08.05
比较可以的程序 想请教大家一起研究 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ News Speed Love / 速递交友   ┃ ┃ 程序版本:Nslove Version 5.0.0 ┃ ┃ 版权所有: 速递交友(nslove.com) ┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ News Speed Love ┃ ┃ Copyright 2003-2008 nslove.com - All Rights Reserved. ┃ ┃ nslove is a trademark of nslove.com ┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃【版权声明】 ┃ ┃ 本软体为共享软体(shareware)提供个人网站免费使用。 ┃ ┃ 非经速递交友书面授权许可,不得将之用于盈利或非盈利性的商业用途。 ┃ ┃ 为适应实际的计算机应用环境或者改进其功能、性能,可以进行必要的修改 ┃ ┃ 但不得去除速递交友的版权标示,不得将修改后版本进行任何的商业行为。 ┃ ┃ 本软体为免费软件,用户自由选择是否使用,在使用中出现任何问题而造成 ┃ ┃ 的损失速递交友不负任何责任。 ┃ ┃ 使用该软件必须保留速递交友的版权声明,将该软件从原有自然语言文字转 ┃ ┃ 换成另一自然语言文字的,仍应注明出处。 ┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ 文件名称:Nslove5.0功能说明 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛   安装要求:   安装环境:Windows2000以上,IIS5.0以上,商业版需要安装MSSql 2000以上,安装前请确保您满足安装环境。   组件要求:FSO读写权限,Adobe.Stream组件,邮件组件(如:Jmail),上传组件,水印组件   运行环境:ASP+Js+Ajax+XML   软件大小:22.6M   软件类别:国产软件|交友会员   软件语言:简体中文   软件授权:免费版   演示地址:http://www.nslove.com   相关链接:http://www.nslove.com   软件介绍:   1、Nslove5.0采用缓存+标签+模板重新设计核心,程序代码与模板分离,后台提供模板修改美化!语言环境ASP+SQL存储过程,支持达百万会员,结合Ajax无刷新设计,提高用户的使用体验。布局方式Div+CSS设计提高访问速度!各栏目可生成静态html。   2、后台提供会员资料采集,可采集世纪佳缘、嫁我网会员等,如需要采集另外网站与本人联系。采集系统用类设计,分析用正则分析,速度非常快,大约1.5秒采集一个会员资料包括头像下载到本地,一夜之间可以达到百万用户数据。   3、支持二级域名设置:可对各个栏目进行二级设计,当然服务器需要二级域名支持,自由命名自由指定。   4、支持国家、省州、市区分站生成,并且各个分站会员自动匹配   5、支持学校分站生成,可建立各学校的交友网分站   6、会员注册资料包括基本信息、详细信息、联系信息等,注册步骤基本按这个顺序注册,只要注册完第一步,可登录之后再注册。注册完发送邮件进行激活,并且有16位激活代码!用户必须激活。会员注册以邮件地址为注册名!会员每天登录都会自动发送一封邮件,可作宣传或者服务使用,邮件内容可以后台设置!   7、用户注册可推荐、机构加盟注册,推荐与机构都可进行提成,提成可在后台设置提成比率!   8、注册完成生成个人主页,会员拥有自己的个人资料主页!可自由选择模板,更具个性化。   9、会员认证:身份证、头像、视频认证及上传房产证、婚育证、职业证等,多达22项认证,只要认证5项,即可得到5星认证会员。   10、头像提供本地上传、视频拍照,头像可在线进一步处理,可翻转、放大、缩小等操作!   11、头像可以设置显示模式:所有人可见、会员可见、VIp会员可见、推荐会员可见、金币支付可见、密码可见等几项!   12、会员可以发布征婚信息,更加快速的征友征婚!可自由发送或者关闭!   13、有接收到邮件信息,系统会在右下角上升一个小窗口,提示邮件信息及类别!   14、会员可添加专递对象,可对会员发送置顶邮件,让对方不得不看邮件内容!达到醒目作用,自由申请   15、会员可申请服务:如升级VIP、明星榜(总站、地区分站)等服务,只要金币足够可以自由申请   16、支持在线聊天、会员可以邀请对方进行在线聊天,可以立即更详细了解对方。   17、会员可以参与网站赚钱计划,普通会员提供推广代码,只要对方浏览该网址,并没有注册但是以后只要访问并注册,也属于该会员的推广会员,推广会员可参与拥金提成,在交友的同时也可以参与赚钱是个不错的地方。对于婚介机构有自己的推广代码,提成比率是不同!提成比率可以后台设置。   18、栏目说明:博客日记、网友相册、线下活动、1+1约会、群组圈子、拼客、试客、恋爱诊所、话题(辩论型)等。   19、撰写日记可创建属于自己的日记,可生成静态的html文件。发布日记有金币操作。可设置一天操作几次,防止刷金币问题,也可以作为管理员推广某个栏目提高人气方法,如今天对某个栏目设置金币赠送,让会员都来参与。其它栏目也有这个功能。   20、用户可创建相册,生成静态相册本。文件数由后台设置!相册图片来源可以本地批量上传、视频拍照、远程抓取保存到本地。   21、支持用户创建群组功能!创建个数,由后台管理设置!群组方便有相同兴趣组成一个群落!群组可以创建论坛版块、相册等。可设置群组管理员、可升级群组等级(普通群、高级群、超级群、无限群),等级后台可以设置!群组可选择模板生成!   22、发布聚会活动,婚介机构会员可以发布、可申请服务如场地提供、志愿者服务、主持人、电视媒体等!   23、1+1约会,会员可以找对方发起私人约会,可对大众发起公开约会。   24、可发布和参与拼客、试客信息,借与交友网站会员宏大,可以提高会员活跃,在交友的同时有另外一份礼物!   25、恋爱诊所提供会员提问问题解决问题的地方!   26、升级VIP、VIP用户有更高的权限,有时间期限!明星榜提供会员自我推荐,成功率可成倍增长。推荐有时间限制及费用要求   27、成功故事,会员成功交友可以发布,让大家来分享他的快乐,可创建一个两个人的空间,可以发布成功经验、可以上传相册等,可以选择自己的模板生成静态   28、会员管理操作更人性化、无需频繁的跳转窗口,提交保存只会跳出一个小窗口即可保存!      更多功能将会在后续进行补充或者到官方论坛查看:http://www.nslove.com/bbs/    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 福建速递交友网络科技有限公司 ┃ ┃ 网址:http://www.nslove.net、http://www.nslove.net ┃ ┃ 地址:福建省厦门市集美区凤林下头37号 ┃ ┃ 电话:0592-6250838 ┃ ┃ 手机:013459256001 ┃ ┃ 主机事业部:info@nslove.com ┃ ┃ 网站事业部:love@nslove.com ┃ ┃ 在线联系:QQ 10689579 MSN:Ns_L@hotmail.com ┃ ┃ 详细联系方法:http://www.nslove.cn/email.asp ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

28,405

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧