我想把xml某个标签过后的所有文本全部读出来怎么办?

Tiyz01 2009-11-22 10:43:10
比如votes.xml文件是这样的

<?xml version="1.0" encoding="utf-8"?>
<votes id = "votesroot">
<option id = "70" movie = "建国大业" />
<option id = "71" movie = "当幸福来敲门" />
<option id = "72" movie = "风声" />
<option id = "73" movie = "2012" />
<option id = "74" movie = "后天" />
<option id = "75" movie = "花木兰" />
</votes>

-----

index.html

<script type="text/javascript">
//读取xml的函数
function loadXMLDoc(dname) {
try {
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
catch(e) {
try {
xmlDoc=document.implementation.createDocument("","",null);
} catch(e) {alert(e.message);}
}
try {
xmlDoc.async=false;
xmlDoc.load(dname);
return(xmlDoc);
} catch(e) {alert(e.message);}
return(null);
}

var xmlDoc=loadXMLDoc("votes.xml");
var root = xmlDoc.documentElement;
alert(root.InnerText);
</script>

结果是 不管alert(root.innerText);还是alert(root.innerHTML);其结果都为undefined

请问我该如何读取这个votes里边的东西?

<option id = "70" movie = "建国大业" />
<option id = "71" movie = "当幸福来敲门" />
<option id = "72" movie = "风声" />
<option id = "73" movie = "2012" />
<option id = "74" movie = "后天" />
<option id = "75" movie = "花木兰" />
...全文
187 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
草根醉秋意 2009-11-23
  • 打赏
  • 举报
回复

//Internet Explorer 使用loadXML()方法来解析XML字符串,而其他浏览器使用 DOMParser对象
function createXmlDoc(xmlText) {
if (!xmlText) return null;
try {
var xmlDom = new ActiveXObject("Microsoft.XMLDOM")
xmlDom.loadXML(xmlText)
return xmlDom
}
catch (e) {
try {
return new DOMParser().parseFromString(xmlText, "text/xml");
} catch (e) {
return null;
}
}
}

//获取节点及其子节点的文本内容
function getXmlText(oNode) {
if (oNode.text) {//IE
return oNode.text;
}
var sText = "";
for (var i = 0; i < oNode.childNodes.length; i++) {
if (oNode.childNodes[i].hasChildNodes()) {
sText += getXmlText(oNode.childNodes[i]);
}
else {
sText += oNode.childNodes[i].nodeValue;
}
}
return sText; //FF
}

//获取节点及其子节点的字符串标示
function getXml(oNode) {
if (oNode.xml) {
return oNode.xml; //IE
}
var oSerializer = new XMLSerializer();
return oSerializer.serializeToString(oNode); //FF
}



var xmlText = '<?xml version="1.0" encoding="utf-8"?><votes id = "votesroot"><option id = "70" movie = "建国大业" >建国大业</option><option id = "71" movie = "当幸福来敲门" /><option id = "72" movie = "风声" /><option id = "73" movie = "2012" /><option id = "74" movie = "后天" /><option id = "75" movie = "花木兰" /></votes>';

var xmlDoc = createXmlDoc(xmlText);
alert(getXmlText(xmlDoc.documentElement));
alert(getXml(xmlDoc.documentElement));

var nodes = xmlDoc.documentElement.getElementsByTagName("option");
for (var i = 0, len = nodes.length; i < len; i++) {
alert(nodes[i].getAttribute("movie"));
}
草根醉秋意 2009-11-23
  • 打赏
  • 举报
回复
楼主你没有认真看我给你发的资料,你的xml文档本来就没有text类型的节点怎么可能获取啊?

//Internet Explorer 使用loadXML()方法来解析XML字符串,而其他浏览器使用 DOMParser对象
function createXmlDoc(xmlText) {
if (!xmlText) return null;
try {
var xmlDom = new ActiveXObject("Microsoft.XMLDOM")
xmlDom.loadXML(xmlText)
return xmlDom
}
catch (e) {
try {
return new DOMParser().parseFromString(xmlText, "text/xml");
} catch (e) {
return null;
}
}
}

//获取节点及其子节点的文本内容
function getXmlText(oNode) {
if (oNode.text) {//IE
return oNode.text;
}
var sText = "";
for (var i = 0; i < oNode.childNodes.length; i++) {
if (oNode.childNodes[i].hasChildNodes()) {
sText += getXmlText(oNode.childNodes[i]);
}
else {
sText += oNode.childNodes[i].nodeValue;
}
}
return sText; //FF
}

//获取节点及其子节点的字符串标示
function getXml(oNode) {
if (oNode.xml) {
return oNode.xml; //IE
}
var oSerializer = new XMLSerializer();
return oSerializer.serializeToString(oNode); //FF
}


var xmlText = '<?xml version="1.0" encoding="utf-8"?><votes id = "votesroot"><option id = "70" movie = "建国大业" >建国大业</option><option id = "71" movie = "当幸福来敲门" /><option id = "72" movie = "风声" /><option id = "73" movie = "2012" /><option id = "74" movie = "后天" /><option id = "75" movie = "花木兰" /></votes>';

var xmlDoc = createXmlDoc(xmlText);
alert(getXmlText(xmlDoc.documentElement));
alert(getXml(xmlDoc.documentElement));
passself 2009-11-23
  • 打赏
  • 举报
回复
先读取,存入数组,才可以,再显示
「已注销」 2009-11-23
  • 打赏
  • 举报
回复
楼上的资料没有什么用,希望能够读懂帖子再回答。
草根醉秋意 2009-11-22
  • 打赏
  • 举报
回复
http://laoney.net/post/2009/07/04/200907041154270005.aspx

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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