JS解析XML文件和字符串的跨浏览器实现
大多数浏览器都内建了供读取和操作 XML 的 XML 解析器。
解析器把 XML 转换为 JavaScript 可存取的对象。
但是IE和其它浏览器是有很大区别的
解析 XML 文件 - 跨浏览器实现
<html>
<body>
<mce:script type="text/javascript"><!--
try //针对IE和基于IE内核的浏览器
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e)
{
try //针对Firefox, Opera等其它浏览器.
{
xmlDoc=document.implementation.createDocument("","",null);
}
catch(e) {alert(e.message)}
}
try
{
xmlDoc.async=false;
xmlDoc.load("books.xml");
}
catch(e) {alert(e.message)}
// --></mce:script>
</body>
</html>
解析 XML 字符串 - 跨浏览器实现
<html>
<body>
<mce:script type="text/javascript"><!--
text="<bookstore>"
text=text+"<book>";
text=text+"<title>Title</title>";
text=text+"<author>Author</author>";
text=text+"<year>2010</year>";
text=text+"</book>";
text=text+"</bookstore>";
try //针对IE和基于IE内核的浏览器
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(text);
}
catch(e)
{
try //针对FireFox,Opera等其它浏览器
{
parser=new DOMParser();
xmlDoc=parser.parsefromString(text,"text/xml");
}
catch(e) {alert(e.message)}
}
// --></mce:script>
</body>
</html>
注意
:
Internet Explorer 使用 loadXML() 方法来解析 XML 字符串,而其他浏览器使用 DOMParser 对象。
相关文档:
xml为:
<friendShares>
<totalCount>352</totalCount>
<friendShare>
<code>XXXXXXX</code>
<date>2010-01-15T00:00:00+08:00</date>
<friendId>499</friendId>
<movie>
<code>XXXXXX</code>
<contentId>89718</content ......
package com.beckham.dom;
import java.io.File;
import java.io.FileWriter;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
/**
* @author 作者<Beckham>
* Email:gaowm0207@gmail.com ......
java代码
package com.xml.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class XMLAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private String username;
private String mobile;
public void setUs ......
1、首先下载 xstream.jar和jettison.jar(转换为json时用到),并引入该包。
2、看如下代码吧:
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
import c ......
xml中有以下字符不能出现,否则,xml将不能被正确解析:
&><'
如果在xml中出现了非法字符呢必须将其过滤掉!过滤的方法很简单,替换就可以了:
例如在php xml_parser_create 中,就可以这么做:
$parser = xml_parser_create(); //创建一个parser编辑器
xml_set_element_handler($parser, "startElement", " ......