ASP XML操作クラス、XML操作を学びたい友人はそれを参照できます。コードをコピーします。コードは次のとおりです。クラス XMLClass
プライベートobjXml
プライベートxmlDoc
プライベートxmlパス
'//============================================== = =============
'
サブクラス_初期化
objXml = Server.CreateObject(MSXML2.DOMDocument) を設定します
objXml.preserveWhiteSpace = true
objXml.async = false
エンドサブ
サブクラス_終了
objXml = なしを設定します
エンドサブ
'//============================================== = =============
'
パブリック関数 CreateNew(sName)
tmpNode = objXml.createElement(sName) を設定します。
objXml.appendChild(tmpNode)
CreateNew = tmpNode を設定します
終了機能
'
パブリック関数 OpenXml(sPath)
OpenXml=False
sPath=サーバー.マップパス(sPath)
'Response.Write(sPath)
xmlPath = sPath
objXml.load(sPath) の場合
xmlDoc = objXml.documentElement を設定します
OpenXml=True
終了の場合
終了機能
'
パブリックサブLoadXml(sStr)
objXml.loadXML(sStr)
xmlDoc = objXml.documentElement を設定します
エンドサブ
パブリックサブInceptXml(xObj)
objXml = xObj を設定します
xmlDoc = xObj.documentElement を設定します
エンドサブ
'//============================================== = =============
'
パブリック関数 AddNode(sNode,rNode)
' sNode STRING ノード名
'rNode OBJECT はノードの上位ノード参照を追加します
'================================================ = ============
DimTmpNode
TmpNode = objXml.createElement(sNode) を設定します。
rNode.appendChild TmpNode
AddNode = TmpNode を設定します
終了機能
'
パブリック関数 AddAttribute(sName,sValue,oNode)
' sName STRING 属性名
' sValue STRING 属性値
' 属性が追加された oNode OBJECT オブジェクト
'================================================ = ============
oNode.setAttribute sName、sValue
終了機能
'
パブリック関数 AddText(FStr,cdBool,oNode)
ディム tmpText
cdBool の場合
tmpText = objXml.createCDataSection(FStr) を設定します。
それ以外
tmpText = objXml.createTextNode(FStr) を設定します。
終了の場合
oNode.appendChild tmpText
終了機能
'================================================ = ================================================ = =====
'
パブリック関数 GetAtt(aName,oNode)
' aName STRING 属性名
' oNode OBJECT ノード参照
'================================================ = ============
dim tmpValue
tmpValue = oNode.getAttribute(aName)
GetAtt = tmpValue
終了機能
'
パブリック関数 GetNodeName(oNode)
' oNode OBJECT ノード参照
GetNodeName = oNode.nodeName
終了機能
'
パブリック関数 GetNodeText(oNode)
' oNode OBJECT ノード参照
GetNodeText = oNode.childNodes(0).nodeValue
終了機能
'
パブリック関数 GetNodeType(oNode)
' oNode OBJECT ノード参照
GetNodeType = oNode.nodeValue
終了機能
'
パブリック関数 FindNodes(sNode)
Dim tmpNodes
tmpNodes = objXml.getElementsByTagName(sNode) を設定します。
FindNodes = tmpNodes を設定します。
終了機能
'
パブリック関数 FindNode(sNode)
DimTmpNode
TmpNode=objXml.selectSingleNode(sNode) を設定します。
FindNode = TmpNode を設定します
終了機能
'
パブリック関数 DelNode(sNode)
Dim TmpNodes、Nodesss
TmpNodes=objXml.selectSingleNode(sNode) を設定します。
Nodesss=TmpNodes.parentNode を設定します
Nodesss.removeChild(TmpNodes)
終了機能
'
パブリック関数 ReplaceNode(sNode,sText,cdBool)
'子を置き換える
Dim TmpNodes、tmpText
TmpNodes=objXml.selectSingleNode(sNode) を設定します。
'AddText sText、cdBool、TmpNodes
cdBool の場合
tmpText = objXml.createCDataSection(sText) を設定します。
それ以外
tmpText = objXml.createTextNode(sText) を設定します。
終了の場合
TmpNodes.replaceChild tmpText,TmpNodes.firstChild
終了機能
プライベート関数処理命令
'//--XML宣言を作成
薄暗いobjPi
Set objPi = objXML.createProcessingstruct(xml, version=&chr(34)&1.0&chr(34)&encoding=&chr(34)&gb2312&chr(34))
'//-- XML ライフを XML ドキュメントに追加します
objXML.insertobjPi の前、objXML.childNodes(0)
終了機能
'//============================================== = ==============================
'
パブリック関数 SaveXML()
'処理命令()
objXml.save(xmlPath)
終了機能
'
パブリック関数 SaveAsXML(sPath)
処理命令()
objXml.save(sPath)
終了機能
'//============================================== = ==================================
'関連統計
'
プロパティのルートの取得
ルート = xmlDoc を設定します
終了プロパティ
'
プロパティの長さの取得
長さ = xmlDoc.childNodes.length
終了プロパティ
'//============================================== = ==================================
'関連するテスト
プロパティ
TestNode = xmlDoc.childNodes(0).text
終了プロパティ
終了クラス
XMLDom を介してサーバー側で XML ファイルを操作する ASP の主なメソッドと実装
データ量が小さい場合、XML ファイルには、取得と更新において ACCESS よりも多くの利点があります。
一度、データベースを使用せずに、Web サイトの会員情報、商品データ情報、トランザクション情報、Web サイトのカスタマイズ情報を 3 つの XML ファイルに保存してテストしてみたところ、実行結果はデータベースよりもはるかに高速に感じられましたが、そうではありませんでした。テストしてみてください。
XML 操作の作成、クエリ、変更などの主な方法について説明します。
'DOMオブジェクトの作成
set objDom=server.CreateObject(MicroSoft.XMLDom)
'XMLデータを取得する
'方法1 XMLファイルのXMLデータを取得する
objDom.load(c:/test.xml)
'方法2 XMLデータ文字列のデータを取得する
objDom.loadxml(<人><男性名=sd/></人>)
'ノードオブジェクトを作成する
Newnode=objDom.CreateElement(people) を設定します
'このノードに値を与えます
Newnode.Text=人
'このノードに属性を追加します
Set NewAttribute=objDom.CreateNode(属性,名前,)
NewAttribute.Text= 張三
Newnode.SetAttributeNode 新しい属性
'このノードに子ノードを追加します
NewnodeChild=objDom.CreateElement(アドレス)を設定します
Newnode.appendChild NewnodeChild
'このノードオブジェクトを保存します
objDom.appendChild 新しいノード
objDom.save(c:/test.xml)
'ノードオブジェクトを検索
set objtofind=objdom.documentElement.SelectSingleNode(//people/man)
'このノード オブジェクトのノード名、ノード値、特定の属性値、およびすべての XML を取得します
ノード名=objtofind.ノード名
ノード値=objtofind.text
objtofind.GetAttributeNode(name).Nodevalue '属性名 name を持つ属性値
'属性ノードオブジェクトを取得します
set objattrtofind=objdom.documentElement.SelectSingleNode(//people/man).GetAttributeNode(name)
'このノードの属性名と属性値を取得します
ノードattrname=objattrtofind.nodename
nodeattrvalue=objattrtofind.nodevalue
'ノードオブジェクトを削除します
set objnode=objdom.documentElement.SelectSingleNode(//people/man) '削除するノード
set objparentnode=objdom.documentElement.SelectSingleNode(//people) '削除するノードの親ノード
objparentnode.removeChild objnode
'ノードのバイトポイントセットを取得します
set objnodes=objdom.documentElement.SelectSingleNode(//people/man).ChildNodes
このコレクションを反復処理します
方法 1
objnode の各要素に対して
response.write element.nodename バイトの名前付け
応答.書き込み要素.テキストのバイトポイント値
次
方法 2
domlength=objnodes.length
for i = 0 から domlength-1
response.write objnodes.childnodes(i).nodename バイトの名前付け
response.write objnodes.childnodes(i).text バイトポイント値
次
'ノードの属性セットを取得します
set objnodes=objdom.documentElement.SelectSingleNode(//people/man).GetAttributeNode(name).attributes
このコレクションを反復処理します
objnode の各要素に対して
response.write element.nodename 属性名
response.write element.nodevalue 属性値
次
xmldom オブジェクトを上手に使って XML ファイルを操作できるようになると、
xmlhttp オブジェクトは、asp で多くの機能を実現するために使用されます。
re:[転送]XMLDomを介してサーバー側でXMLファイルを操作するASPの主なメソッドと実装
フェイフェイさん、@ の使い方を導入しませんか? これがないと色々と不便です。
XML は、データ圧縮技術とも呼ばれます。その名前が示すように、XML はデータベースとして使用できます。
したがって、xml は小さなデータベースと考えることができます。なぜ小さいと言われるのでしょうか? XML 自体の機能とアプリケーションの利便性のため、データベースとは依然として一定の違いがあります。では、なぜ XML を使用するのでしょうか?アプリケーションによってはデータ アクセスを実行することがありますが、データベースを使用する場合、表示が十分に柔軟で便利ではないためです。この時はxmlと組み合わせて使うと良いでしょう。
xml はデータベースとみなすことができるため、最初のステップは当然ながらリンク オブジェクトを作成することです。 (ASP+xmlを例として挙げます)
作成方法はリンクデータベースと同様、server.createobjectを使用して作成します。
その方法は次のとおりです。
set xmlDoc= Server.CreateObject(microsoft.xmldom)
xmlDoc.async=false
xmldata=データソースへの絶対パス
xmlDoc.load xmldata 'ここにリンクするにはloadメソッドを使用してください
xml のデータ形式は比較的使いやすいため、このまま使用し続けると、人為的またはその他の理由でデータ形式が不正になる可能性があり、このように、プログラムがプロセスダウンする可能性があります。多くの場合、データ形式の検証はリンク オブジェクトの作成後に行われます。
その方法は次のとおりです。
xmlDoc.parseError.errorCode<>0 の場合、
….エラー処理
<%
'----------
'プログラムの紹介: XML ドキュメント内の指定されたノードのテキストを追加、削除、変更、表示するための ASP 言語を完成させます。
'エントリパラメータ: なし
'エクスポートパラメータ: なし
「----------」
'関数名: ConnectXml()
'エントリパラメータ: filename 接続または開く XML ファイル名
'エクスポートパラメータ: なし
'戻り値: ConnectXml=0、XMLMorntekDocument は XML ドキュメントを正常にロードするオブジェクトです。
'ConnectXml<>0 を実行し、エラー メッセージ strError を出力します。
「----------」
dim XMLMorntekDocument
関数 ConnectXml(ファイル名)
dim strSourceFile
strSourceFile = Server.MapPath(ファイル名)
XMLMorntekDocument = Server.CreateObject(Microsoft.XMLDOM) を設定します。
XMLMorntekDocument.async = false
XMLMorntekDocument.load(strSourceFile)
ConnectXml=XMLMorntekDocument.parseerror.errorcode
if XMLMorntekDocument.parseerror.errorcode<>0 then
strError=<h2>エラー&XMLMorntekDocument.parseerror.errorcode&</h2>
strError=strError&XMLMorntekDocument.parseerror.reason&<br>
strError=strError&XMLMorntekDocument.parseerror.url&<br>
strError=strError&XMLMorntekDocument.parseerror.line&<br>
strError=strError&XMLMorntekDocument.parseerror.filepos&<br>
strError=strError&XMLMorntekDocument.parseerror.srcText&<br>
応答.write strError
終了する場合
終了関数
「----------」
'関数名: CloseXml()
'エントリパラメータ: なし
'エクスポートパラメータ: なし
「----------」
関数 CloseXml(XMLMorntekDocument)
IsObject(XMLMorntekDocument) の場合
set XMLMorntekDocument=nothing
終了する場合
終了関数
「----------」
'関数名: SelectXmlNodeText(要素名)
'エントリパラメータ: elementname 要素の名前
'エクスポートパラメータ: なし
「----------」
関数 SelectXmlNodeText(要素名)
要素名=//&要素名
temp=XMLMorntekDocument.selectSingleNode(要素名).text
selectXmlNodeText=server.htmlencode(temp)
終了関数
「----------」
'関数名: InsertXmlNodeText(be要素名,要素名,要素テキスト)
'エントリパラメータ: elementname 挿入された要素の名前
' befelementname は、この要素の名前の前に要素を挿入します
'elementtext 挿入された要素のテキスト
'エクスポートパラメータ: なし
「----------」
function InsertXmlNodeText(要素名,要素名,要素テキスト)
薄暗い光、要素
set befelement=XMLMorntekDocument.selectSingleNode(//&befelementname)
set element= XMLMorntekDocument.createelement(要素名)
befelement.insertBefore要素,befelement.firstchild
要素.テキスト=要素テキスト
終了関数
「----------」
'関数名: UpdateXmlNodeText(要素名,新しい要素テキスト)
'エントリパラメータ: elementname 要素の名前
' newelementtext 要素の新しいテキスト
'エクスポートパラメータ: なし
「----------」
関数 UpdateXmlNodeText(要素名,新しい要素テキスト)
薄暗い要素
set element=XMLMorntekDocument.selectSingleNode(//&要素名)
element.text=新しい要素テキスト
終了関数
「----------」
'関数名: DeleteXmlNodeText(要素名)
'エントリパラメータ: elementname 要素の名前
'エクスポートパラメータ: なし
「----------」
関数 DeleteXmlNodeText(要素名)
XMLMorntekDocument.selectSingleNode(//&要素名).text =
終了関数
%>
___________________
この記事はテストされておらず、実現可能性は不明です。