问题描述
我在我的项目中使用传统的ASP。我想合并两个XML的在一起。我该怎么做呢?下面是我的示例code:
XML 1
<目录和GT;
< CD>
< TITLE> 1 LT; / TITLE>
<艺术家>鲍勃·迪伦< /艺术家>
<&COUNTRY GT;美国< /国家>
<公司+ GT;哥伦比亚< / COMPANY>
<价格>&10.90 LT; /价格>
< YEAR> 1985年< /年>
< / CD>
< CD>
&所述; TITLE→2&下; / TITLE>
<艺术家>健美的Tyler< /艺术家>
<&COUNTRY GT; UK< /国家>
<公司+ GT; CBS唱片和LT; / COMPANY>
<价格>&9.90 LT; /价格>
< YEAR> 1988年< /年>
< / CD>
< CD>
< TITLE>第3版; / TITLE>
<艺术家>多莉·帕顿< /艺术家>
<&COUNTRY GT;美国< /国家>
<公司+ GT; RCA< / COMPANY>
<价格>&9.90 LT; /价格>
< YEAR> 1982年< /年>
< / CD>
< /目录>
XML2
<目录和GT;
< CD>
< TITLE> 4℃; / TITLE>
<艺术家>加里·摩尔< /艺术家>
<&COUNTRY GT; UK< /国家>
<公司+ GT;维京唱片< / COMPANY>
<价格>&10.20 LT; /价格>
< YEAR> 1990年< /年>
< / CD>
< CD>
< TITLE> 5℃/ TITLE>
<艺术家>艾罗斯·拉玛佐第< /艺术家>
<&COUNTRY GT; EU< /国家>
<公司+ GT; BMG和LT; / COMPANY>
<价格>&9.90 LT; /价格>
< YEAR> 1997年< /年>
< / CD>
< CD>
< TITLE> 6≤/ TITLE>
<艺术家>比吉斯< /艺术家>
<&COUNTRY GT; UK< /国家>
<公司+ GT;宝丽< / COMPANY>
<价格>&10.90 LT; /价格>
< YEAR> 1998年< /年>
< / CD>
< /目录>
这是ASP code我目前使用的:
昏暗DOC1''#作为MSXML2.DOMDocument30
昏暗的DOC2''#作为MSXML2.DOMDocument30
黯淡doc2Node''#作为MSXML2.IXMLDOMNode设置DOC1 = CREATEOBJECT(MSXML2.DOMDocument.3.0)
设置DOC2 = CREATEOBJECT(MSXML2.DOMDocument.3.0)doc1.Load01.xml
doc2.Load02.xml对于每个doc2Node在doc2.documentElement.childNodes
doc1.documentElement.appendChild doc2Node
下一个回复于doc1.xml
但现在我得到一个错误:
Microsoft VBScript运行时错误'800a01a8'所需的对象:'documentElement'
拓展上约恩休乌 - 罗德的回答是:
<%
昏暗的DOC1作为MSXML2.DOMDocument30
昏暗的DOC2作为MSXML2.DOMDocument30
昏暗doc2Node作为MSXML2.IXMLDOMNode设置DOC1 = CREATEOBJECT(MSXML2.DOMDocument.3.0)
设置DOC2 = CREATEOBJECT(MSXML2.DOMDocument.3.0)doc1.Load01.xml
doc2.Load02.xml的Response.Write(doc1.xml.Replace(< /目录>中,doc2.xml.Replace(< XML版本=1.0编码=ISO-8859-1>, ).Replace(&所述; CATALOG>中,))%GT;
这将取代从与doc2.xml doc1.xml标签没有前两行,但同样,只会针对这种情况,你有这两个XML文件,它们不包含重复节点的工作。
您可以阅读使用FileSystemObject的文件,这会更快,但在DOM加载它的好处是,它只会加载良好的XML。
I'm using classic ASP in my project. I want to merge two XMLs together. How do I do this? Below is my sample code:
XML 1
<CATALOG>
<CD>
<TITLE>1</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>2</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
<CD>
<TITLE>3</TITLE>
<ARTIST>Dolly Parton</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>RCA</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1982</YEAR>
</CD>
</CATALOG>
XML2
<CATALOG>
<CD>
<TITLE>4</TITLE>
<ARTIST>Gary Moore</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1990</YEAR>
</CD>
<CD>
<TITLE>5</TITLE>
<ARTIST>Eros Ramazzotti</ARTIST>
<COUNTRY>EU</COUNTRY>
<COMPANY>BMG</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1997</YEAR>
</CD>
<CD>
<TITLE>6</TITLE>
<ARTIST>Bee Gees</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Polydor</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1998</YEAR>
</CD>
</CATALOG>
This is ASP code I currently use:
Dim doc1 ''# As MSXML2.DOMDocument30
Dim doc2 ''# As MSXML2.DOMDocument30
Dim doc2Node ''# As MSXML2.IXMLDOMNode
Set doc1 = createobject("MSXML2.DOMDocument.3.0")
Set doc2 = createobject("MSXML2.DOMDocument.3.0")
doc1.Load "01.xml"
doc2.Load "02.xml"
For Each doc2Node In doc2.documentElement.childNodes
doc1.documentElement.appendChild doc2Node
Next
response.write doc1.xml
But now I'm getting an error:
Microsoft VBScript runtime error '800a01a8' Object required: 'documentElement'
Expanding on Jørn Schou-Rode's answer:
<%
Dim doc1 'As MSXML2.DOMDocument30
Dim doc2 'As MSXML2.DOMDocument30
Dim doc2Node 'As MSXML2.IXMLDOMNode
Set doc1 = createobject("MSXML2.DOMDocument.3.0")
Set doc2 = createobject("MSXML2.DOMDocument.3.0")
doc1.Load "01.xml"
doc2.Load "02.xml"
Response.Write ( doc1.xml.Replace("</CATALOG>", doc2.xml.Replace( "<?xml version="1.0" encoding="ISO-8859-1" ?>","").Replace("<CATALOG>","") )
%>
This would replace the tag from doc1.xml with the doc2.xml without the first two lines, but again, would only work for this situation where you have these two xml files and they don't contain duplicate nodes.
You could read the files in using the FileSystemObject which would be faster, but the benefit of loading it in the DOM is that it would only load well formed xml.
这篇关于如何合并在传统的ASP两个XML文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!