Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
E和FierFox瀏覽器對(duì)于這裝載同域的XML文件和裝載XML字符串這兩種情況,分別有各自的處理方式。IE的解析器支持XML文件和XML字符串的加載,而火狐瀏覽器使用單獨(dú)的解析器把XML載入內(nèi)存,然后轉(zhuǎn)換為可通過JS訪問的XML DOM對(duì)象。
以下是js代碼:
/* * 封裝IE和Firefox類瀏覽器中裝載同域XML或XML字符串的方法, * @param flag true表示裝載XML的文件,false表示裝載XML的字符串 * @param xmldoc flag為true表示XML文件的路徑,flag為false表示XML字符串 */ function loadXML(flag,xmldoc){ if(window.activeXObject) { //IE瀏覽器 //創(chuàng)建空的XML對(duì)象 var activexName = ["MSXML2.DOMDdcument","Miscrosoft.XmlDom"]; var xmlObj; for(var i = 0; i < actviexName.length;i++){ try{ xmlObj = new ActiveXObject(activeName[i]); break; }catch(e){ } } if(xmlObj){ //同步方式裝載XML數(shù)據(jù),確保在文檔完全加載之前解析器不會(huì)繼續(xù)腳本的執(zhí)行 xmlObj.async = false; if(flag){ //load用于加載文件,loadXML用于加載字符串 //裝載XML文件 xmlObj.load(xmldoc); }else{ //裝載XML的字符串 xmlObj.loadXML(xmldoc); } //返回根節(jié)點(diǎn) return xmlObj; //返回根元素節(jié)點(diǎn) return xmlObj.documentElement; }else{ alert("裝載XML文檔的對(duì)象創(chuàng)建失敗"); return null; } }else if(document.implementation.creatDocument){ //針對(duì)Firefox類瀏覽器 var xmlObj; if(flag){ //裝載XML文件 //先創(chuàng)建一個(gè)空的xml dom對(duì)象 xmlObj = document.implementation.creatDocument("","",null); if(xmlObj){ //同步方式進(jìn)行裝載 xmlObj.async = false; xmlObj.load(xmldoc); return xmlObj.documentElement; }else{ alert("裝載XML文檔的對(duì)象創(chuàng)建失敗"); return null; } }else{ //裝載XML的字符串 //創(chuàng)建一個(gè)dom解析器 xmlObj = new DOMParser(); //把xml字符串解析成要返回的dom對(duì)象 var docRoot = xmlObj.parerFromString(xmldoc,"test/xml"); return docRoot.documentElement; } } alert("裝載XML文檔的對(duì)象創(chuàng)建失敗"); return null; }
html代碼
<html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script type="text/javascript" src="load.js"></script> <script type="text/javascript"> function test(){ //裝載同域的XML文件 var domxml1 = loadXML(true,"test.xml"); //裝載XML字符串 var domxml2 = loadXML(true,"<xml>123</xml>"); alert(""); } </script> </head> <body> <input type="button" value="test" onclick="test()"/> </body> </html>
XML頁內(nèi)容
<?xml version="1.0" encoding="UTF-8"?> <root> 木子松就是我,我就是木子松 </root>
總結(jié)
對(duì)于裝載同域的XML文件,IE瀏覽器和火狐類瀏覽器都是先創(chuàng)建一個(gè)空的XML文檔對(duì)象,然后用“xmlDoc.load(“**.xml”)”告知解析器加載名為**.xml的XML文檔
對(duì)于裝載XML字符串,IE瀏覽器和裝載XML文件的方式一樣,利用微軟內(nèi)建的解析器加載XML字符串;而火狐類瀏覽器,則是通過"var parser = new DOMParser()"創(chuàng)建dom解析器,然后利用方法parserFromString()加載 XML字符串。另外DOMParser對(duì)象的load()方法可用于加載文件。
跨域訪問處于安全方面的原因,現(xiàn)在的瀏覽器不允許跨域訪問。如果想跨域訪問,則必須把XML文件放到自己的服務(wù)器上,否則,xmlDoc.load()將產(chǎn)生錯(cuò)誤“Access is denied”。
1.通過NuGet安裝dll(2種方法)
1.1可以在Visual Studio中打開“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“管理NuGet包”,然后搜索“Free Spire.Doc”,點(diǎn)擊“安裝”。等待程序安裝完成。
1.2將以下內(nèi)容復(fù)制到PM控制臺(tái)安裝:
Install-Package FreeSpire.Doc -Version 10.2
2.手動(dòng)添加dll引用
可通過手動(dòng)下載包到本地,然后解壓,找到BIN文件夾下的Spire.Doc.dll。然后在Visual Studio中打開“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“添加引用”,將本地路徑BIN文件夾下的dll文件添加引用至程序。
轉(zhuǎn)換時(shí),可參考如下代碼來進(jìn)行:
C#
using Spire.Doc;
namespace HTMLtoXML
{
class Program
{
static void Main(string[] args)
{
//創(chuàng)建Document類的對(duì)象
Document doc = new Document();
//加載html文件
doc.LoadFromFile("sample.html",FileFormat.Html);
//保存為XML格式
doc.SaveToFile("HTMLtoXML.xml", FileFormat.Xml);
System.Diagnostics.Process.Start("HTMLtoXML.xml");
}
}
}
轉(zhuǎn)換效果:
—End—
文以C#及VB.NET后端程序代碼示例展示如何將HTML轉(zhuǎn)為XML文件。轉(zhuǎn)換時(shí),調(diào)用Word API -Free Spire.Doc for .NET 提供的文檔加載方法及文檔保存的方法來實(shí)現(xiàn)。轉(zhuǎn)換的代碼步驟很簡(jiǎn)單,具體可參考以下內(nèi)容。
1.通過NuGet安裝dll(2種方法)
1.1可以在Visual Studio中打開“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“管理NuGet包”,然后搜索“Free Spire.Doc”,點(diǎn)擊“安裝”。等待程序安裝完成。
1.2將以下內(nèi)容復(fù)制到PM控制臺(tái)安裝:
Install-Package FreeSpire.Doc -Version 10.2
2.手動(dòng)添加dll引用
可通過手動(dòng)下載包到本地,然后解壓,找到BIN文件夾下的Spire.Doc.dll。然后在Visual Studio中打開“解決方案資源管理器”,鼠標(biāo)右鍵點(diǎn)擊“引用”,“添加引用”,將本地路徑BIN文件夾下的dll文件添加引用至程序。
轉(zhuǎn)換時(shí),可參考如下代碼來進(jìn)行:
C#
using Spire.Doc;
namespace HTMLtoXML
{
class Program
{
static void Main(string[] args)
{
//創(chuàng)建Document類的對(duì)象
Document doc = new Document();
//加載html文件
doc.LoadFromFile("sample.html",FileFormat.Html);
//保存為XML格式
doc.SaveToFile("HTMLtoXML.xml", FileFormat.Xml);
System.Diagnostics.Process.Start("HTMLtoXML.xml");
}
}
}
vb.net
Imports Spire.Doc
Namespace HTMLtoXML
Class Program
Private Shared Sub Main(args As String())
'創(chuàng)建Document類的對(duì)象
Dim doc As New Document()
'加載html文件
doc.LoadFromFile("sample.html", FileFormat.Html)
'保存為XML格式
doc.SaveToFile("HTMLtoXML.xml", FileFormat.Xml)
System.Diagnostics.Process.Start("HTMLtoXML.xml")
End Sub
End Class
End Namespace
轉(zhuǎn)換效果:
—End—
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。