如何获取XML值,然后使用javascript将它们输出到htm文件中
How do I get XML values and then output them into htm files using javascript?
有人能告诉我或提供一个完整(但简单)的例子,说明如何获取XML节点的值并将其绘制(输出)到特定的HTML元素中吗。
我花了几个小时试图查找这个,但没有什么对我有用,或者示例不完整。
另外,请注意,我既不要求也不希望使用".each"方法或任何循环。我只想单独获取一个节点值,并将其放入一个html元素中,但我希望有一个关于两个文件(xml和javascript)中的内容以及如何打开xml文档的示例。我见过打开xml文档的例子,但它们彼此不同,所以我无法知道哪一个真正有效。
我也对此做了一些测试,但似乎无法让它描绘出任何东西。
好吧,您可以使用Ajax调用来获取要读取的文件,在成功回调中,您可以操作从文件接收的数据。。。
假设xml是这样的:
<nodeYouWant simpleAttr="JustAnExample">Text inside Node</nodeYouWant>
要获得XML节点,可以使用:
$.ajax({
type: "GET",
url: "pathToXML.xml",
dataType: "xml",
success: function(data){
//this gets a node
var node = data.getElementsByTagName("nodeYouWant");
//this gets an attribute from the node you just got
var attr = node.getAttribute("simpleAttr");
//To put that attr on a html block:
$(selector).html(attr);
//or if you want the text content of the node do:
var nodeText = $(node).text();
$(selector).html(nodeText);
}
});
$(选择器)这是一种jQuery方法,用于定义要放置文本的html块。。。
示例:
<div id="myID" class="myClass"></div>
选择器可以是$(".myClass")或$("#myID")
有关详细信息,请参阅选择器。
我希望这能有所帮助。
您需要了解的主要内容是DOM是如何工作的。如果你不知道DOM是如何工作的,你可以在这里找到一些信息
本质上,您处理的是父标记和子标记。使用XML,您需要提取这些信息,然后可以从中执行任何您喜欢的操作。
如果您转到左侧栏,这里有很多关于如何操作XMLDOM节点的示例和教程
这里只有几件事需要知道(我的教授教给我的,它们是有用的提示)
-
你不能使用id或类。相反,您应该使用获取XML节点
var elements = node.getElementsByTagName("tagname");
-
不能使用innerHTML获取节点内部的文本。您可以使用HTML,但不能使用XML。为此,您必须使用
var text = node.firstChild.nodeValue;
-
不能使用
.attributeName
获取属性。你需要使用var attrValue = node.getAttribute("attrName");
希望这能有所帮助。如果你还在挣扎,问问就知道了。
好吧,我一直在尝试使用w3schools的例子,我希望这能有所帮助。如果它不只是问:
转到此示例
我将尝试演练这个例子,但你应该对发生的事情有一个大致的了解。他们有一个名为cd_catalog.XML的XML文件,其中包含了他们需要的所有信息。当他们按下按钮时,它只是以HTML格式显示所有信息。如果您查看之前和之后的HTML代码,可以看到myDiv
中填充了xml文件中的所有艺术家。
现在让我们来看一下代码。
function loadXMLDoc()
{
var xmlhttp;
var txt,x,i;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
txt=txt + x[i].childNodes[0].nodeValue + "<br />";
}
document.getElementById("myDiv").innerHTML=txt;
}
}
xmlhttp.open("GET","cd_catalog.xml",true);
xmlhttp.send();
}
需要指出的一些关键事项。一步一步地,他们有一个函数,所以当文档完全加载,并且代码已经发送(这由xmlhttp.status==200
检查)时,他将从cd_catalog.xml中提取所有xml数据,并通过获得xmlhttp.responseXML
将其存储到xmlDoc
中
因此,现在xmlDoc
将cd_catalog.xml中的所有信息存储在一个方便的变量中。从那里,他使用xmlDoc.getElementsByTagName("ARTIST");
获取xml文件中所有艺术家的数组,而不获取其他内容。他把这个阵列命名为x。
现在,他遍历这个被称为x的巨大数组,对于每个索引i
(表示为x[i]),他得到childNodes,它返回一个数组,其中只有一个东西(文本),这就是为什么他引用childNodes[0]
索引,并得到它的.nodeValue
。现在,他将最初存储在xml文件中的文本存储在一个名为txt
的变量中,他只需添加一个</br>
标记和他想要的任何其他HTML,并通过document.getElementById("myDiv").innerHTML
将其放入,以便将其转换为HTML格式。对xml文件中的每个ARTIST标记重复此过程。
我希望这能有所帮助。如果您仍然感到困惑,请告诉我们。这确实需要你知道你正在处理的xml文件以及它在哪里
- console.log以外的Javascript输出函数
- 比较两个值时出现JavaScript输出和控制流错误
- 监视JavaScript输出,例如console.log()
- 意外的javascript输出
- 获取表格格式的 Javascript 输出
- 在 JavaScript 输出中设置字体样式
- javascript输出true中的hasOwnProperty方法
- 让我的javascript输出显示在HTML中
- 向Javascript输出中添加逗号分隔的数字
- 如何在Java程序中读取JavaScript输出文本
- 使用javascript输出样式通知
- Sublime Text 3-can't将javascript输出到浏览器
- c#linq对象到javascript输出
- 如何添加单选按钮和复选框将选择输入到一起以形成JavaScript输出
- JavaScript输出中的CoffeeScript注释
- 以javascript输出对象值
- 你如何格式化json,然后通过Javascript输出它
- 如何将javascript输出到页面
- JavaScript输出消失
- Javascript输出表现得很奇怪