前端解析xml文件(前端解析xml文件格式)
javascript解析xml文件出错
首先你要确定是否加载到资源了,你可以alert(xmlDoc.xml)试一下,
还有一个
var
v
=
xmlDoc.getElementsByTagName('Login/Weapon/W')[0].childNodes.getAttribute('Text');
你这句话是错的,
getElementByTagName是根据标签的名称获取到标签的,
而你写的的是(Login/Weapon/W)
这个是标签的完整路径
你应该这么些xmlDoc.selectSingleNode("Login/Weapon/W")
script
type="text/javascript"
var
xmlDoc
=
new
ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async
=
false;
xmlDoc.load("login.xml");
var
v
=
xmlDoc.selectSingleNode("Login/Weapon/W/@Text").;
document.writeln(v);
/script
这个是那段javascript代码,这段代码是没有错的,我在load其他的xml文件的时候都是没有错的,但是load
login.xml的时候就是加载不出来,你看看你的xml文件有没有错误
js 如何读取xml文档内容
先判断浏览器,然后读取xml数据就可以了
//判断不同的浏览器
function InitMf()
{
var mf_change=false;
try {
mf_change = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
mf_change = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
mf_change = false;
}
}
if (!mf_change typeof XMLHttpRequest!='undefined') {
mf_change = new XMLHttpRequest();
}
return mf_change;
}
读取数据
var xmlHttp = InitMf();
var HTML = "";
//获得xml文件
xmlHttp.open("GET", xmlfile+"?"+Math.random(), true);
// 设置处理服务器的JS函数,函数又 xmlHttp.onreadystatechange来确定
xmlHttp.onreadystatechange=function() {
//alert(xmlHttp.status);
if (xmlHttp.readyState==4 xmlHttp.status==200) {
//ajax的XML传输的解析。获取解析的数据
var xml = xmlHttp.responseXML;
var node = xml.getElementsByTagName("item");//获得总结点
for(var i = 0 ; i node.length ; i++){
var str_t = "";
var str_d = "";
var menuHTML = "";
var elem = node[i];
//下面开始获得子节点数据,当然可以继续循环,获得更下面的节点
var title = elem.getElementsByTagName("title")[0].textContent != undefined ? elem.getElementsByTagName("title")[0].textContent : elem.getElementsByTagName("title")[0].text;
这些只是部分代码,不过已经足够了

js如何解析xml字符串
var xmlStr = 'rootpeoplename张三/nameaddress北京/address/people/root';
var result = null;
eval('result=['+$(xmlStr).find('people').map(function(){
return '{'+$('*',this).map(function(){
return $(this).attr('tagName') + ':"' + $(this).text() + '"';
}).get().join(',') + '}';
}).get().join('],[')+']');
alert(result);
//result是一个数组,如果有多个people节点,则为:[{name:"张三",address="北京"},{name:"李四",address="上海"}]
不好意思偏题了,以下是你要的结果:
var result = $(xmlStr).find('people').children().map(function(){
return $(this).attr('tagName')+'='+$(this).text();
}).get().join();
上面的都是jquery的写法:
javascript的话:
用COM操作:
object xmlDoc = new ActiveObject('msxml2');
xmlDoc.loadXml(xmlStr);
var pNode = xmlDoc.selectSignNode('people');
var result = '';
for(var node in pNode.selectNodes('*')){
result+=(result.length0?',':'') + node.nodeName+'='+node.innerText;
}
alert(reuslt);
或者用DOM操作:
xml id='testXml' /
var result = '';
with(document.getElementById('testXml')){
innerHTML = xmlStr;
for(var child in children){
result += ',' + child.tagName + '=' + child.innerText;
}
if(result.length 0){
result = result.substring(1);
}
}
怎么通过js跨域获取xml文件并解析到html上呢?我要弄一个简单天气预报的页面,主要是怎么去获取。
既然是个API,按理它本身应该提供跨域解决方案的,否则它就是个不完善的API。如果确实要自己解决,我个人认为只有通过代理页面转发才是最好的方法,就是说自己要有可控制的服务器( 虚拟主机也可),然后用php、asp或jsp做一个程序文件,你的js把ajax请求发送到这个文件中,这个文件再通过你说的api把请求发送到目标服务器(服务器间的通讯是不存在跨域问题的),获取到xml数据后再转发给你的js,也就是说你只需要跟你自己的服务器联系即可,剩下的事由它去完成。
Java解析XML 的问题
我来和楼主一起分析一下这个问题吧。
首先,从基本要求可以得知:1、用JAVA编写(是我多余了- -)。2、这是一个JAVA WEB程序。3、要求提供的前端应用可以是页面或客户端。
由以上总结:要求你用JAVA写一个Web Service程序,并提供一个前端程序(简称前台)。接下来第二步的功能要求就明了了。后台的Web service程序(简称后台)的作用就是解析上面的那个XML文件,并跟据解析的结果进行对应的操作,这里的业务操作只要求成生SQL语句并显示就可以了。题目中帮你解释了XML的含义,由以上可知到,要从XML中解析的数据包括:1、表名。2、操作,用Operation值表示分为(0-insert:1-update:2-delete)。3、操作类型,注意这个state是针对字段的,不像operation是针对表的,跟据题目得知,state 有 0 和 5两个值。当值为5时,这个字段应该做为本次操作的条件。题目中将示例XML的含义完整的解释了,并给出了表结构。
接下来就分析一下解决步骤吧,这里不能画图。只好用文字了- -
1、从前台提交一个以上格式的XML数据。
2、后台接收并解释XML数据
3、前台显示解释后生成的SQL
其中第二步细化为:
2.1、解析Table节点,可以得知表名和操作类型。以示例来看,第一个Table节点解析后可以得到:INSERT INTO PERSON 的Sql语句。
2.2、接下来解析Table下的了节点,也就是各字段节点。可以得到:ID=00003和NAME=刘军 这两个信息。因为两个字段的state属性都是0,所以可以生成以下SQL语句:INSERT INTO PERSON (ID,NAME)VALUES("00003","刘军")
2.3、返回结果
大体上就是这样了。另外两个Table节点和示例中第一个节点不同的地方就是操作和State的值。operation不同生成的语句结构就不同。比如第二个语句应该生成:UPDATE 表名 SET 字段=值 这样的结构。state属性就更好处理了。如果发现它的值是5就直接组合一个Where子句放成后面就可以了。