问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

xml和html问题

发布网友 发布时间:2023-03-14 20:03

我来回答

2个回答

热心网友 时间:2023-10-24 02:43

js操作Xml技术,对xml文件内容进行增删改查,给你一个例子:
Js操作XML
<script language=javascript>
var str = "<input>11112345</input>";
var doc = new xml( str );
alert(doc);
//创建一个dom对象
function xml(str){
if(window.DOMParser)//firefox内核的浏览器
{
var p = new DOMParser();
return p.parseFromString( str, "text/xml" );
}
else if( window.ActiveXObject )//ie内核的浏览器
{
var doc = new ActiveXObject( "Msxml2.DOMDocument" );
doc.loadXML(str);
return doc;
}
else
return false;
}
</script>

........................

if(!!document.all)
{
alert('当前浏览器为IE,IE兼容');
}
else
{
alert('当前浏览器为FireFox,FireFox兼容');
}

-------

一般情况下,将数据放到一个节点的属性上,这样最容易操作,

例如xml格式为:

<photo attr1="1" attr2="2"></photo>

如果得到photo节点后,可以如下操作:

node.getAttribute(''attr1'');

这样可以得到属性的值。

第二种情况,如果是放入的节点之间,比如:

<photo>这是我的照片</photo>

这样可以用node.firstChild.data来获取数据,其中photo之间的内容被看作一个文本节点,因此必须用firstChild首先得到这个节点后,然后取其data信息。

第三种情况,如果信息包含一个html或者其他xml无法直接认识的内容,可以将其放入cdata中,这样js也可以很容易处理,跟第二种情况一样:xml代码如下:

<photo><![CDATA[<a href="这是我的照片的连接">这是我的照片</a>]]></photo>

-------------
<script language="JavaScript">
<!--
var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")
doc.loadXML('<?xml version="1.0"?><students><name id="test"><firstname>王</firstname></name></students>');

var newnode = doc.createNode(1,"name","");
var r = doc.createAttribute("id"); //创建属性
r.value="test2";

newnode.setAttributeNode(r); //添加属性

var newelement=doc.createElement("sex");//创建元素

var r1 = doc.createAttribute("id"); //创建属性
r1.value="test2";
newelement.setAttributeNode(r1)
newnode.appendChild(newelement)
doc.lastChild.appendChild(newnode)
alert(doc.xml)//添加一个子节点后的xml
currNode=doc.documentElement.childNodes.item(0);//
doc.documentElement.removeChild(currNode)//删除节点

alert(doc.xml)//删除后的xml

//-->
</script>

------------------
<script language="JavaScript">
<!--
var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")

//加载文档
//doc.load("b.xml");

//创建文件头
var p = doc.createProcessingInstruction("xml","version='1.0' encoding='gb2312'");

//添加文件头
doc.appendChild(p);

//用于直接加载时获得根接点
//var root = doc.documentElement;

//两种方式创建根接点
// var root = doc.createElement("students");
var root = doc.createNode(1,"students","");

//创建子接点
var n = doc.createNode(1,"ttyp","");

//指定子接点文本
//n.text = " this is a test";

//创建孙接点
var o = doc.createElement("sex");
o.text = "男"; //指定其文本

//创建属性
var r = doc.createAttribute("id");
r.value="test";

//添加属性
n.setAttributeNode(r);

//创建第二个属性
var r1 = doc.createAttribute("class");
r1.value="tt";
//添加属性
n.setAttributeNode(r1);
//删除第二个属性
n.removeAttribute("class");
//添加孙接点
n.appendChild(o);
//添加文本接点
n.appendChild(doc.createTextNode("this is a text node."));
//添加注释
n.appendChild(doc.createComment("this is a comment\n"));
//添加子接点
root.appendChild(n);
//复制接点
var m = n.cloneNode(true);
root.appendChild(m);
//删除接点
root.removeChild(root.childNodes(0));
//创建数据段
var c = doc.createCDATASection("this is a cdata");
c.text = "hi,cdata";
//添加数据段
root.appendChild(c);
//添加根接点
doc.appendChild(root);
//查找接点
var a = doc.getElementsByTagName("ttyp");
//var a = doc.selectNodes("//ttyp");
//显示改接点的属性
for(var i= 0;i<a.length;i++)
{
alert(a[i].xml);
for(var j=0;j<a[i].attributes.length;j++)
{
alert(a[i].attributes[j].name);
}
}
//修改节点,利用XPATH定位节点
var b = doc.selectSingleNode("//ttyp/sex");
b.text = "女";
//alert(doc.xml);
//XML保存(需要在服务端,客户端用FSO)
//doc.save();
//查看根接点XML
if(n)
{
alert(n.ownerDocument.xml);
}
//-->
</script>
-------------
<script language="javascript">
function window.onload()
{
var domXML=new ActiveXObject("Microsoft.xmldom");
domXML.load("Sele.xml");
var myRoot=domXML.documentElement;
var myNodes2=myRoot.childNodes;
var myNode2=myNodes2.nextNode();
var tableStr="";
for(var i=0;i<myNodes2.length;i++)
{
myNodes3=myNode2.childNodes;
myNode3=myNodes3.nextNode();
tableStr=tableStr+"<tr>";

for(var j=0;j<myNodes3.length;j++)
{
tableStr=tableStr+"<td width=100 bgcolor='#F3432A'>" + myNode3.text + "</td>";
myNode3=myNodes3.nextNode();
}
myNode=myNodes2.nextNode();
tableStr=tableStr + "</tr>";
}
tableStr="<table width=800 border=1><tr><td>CPU</td><td>内存</td><td>主板</td><td>硬盘</td></tr>" + tableStr + "</table>";
document.all.lideyongValue.innerHTML=tableStr;
}
</script>
-------------
首先,我们需要加载这个xml文件,js中加载xml文件,是通过XMLDOM来进行的.
// 加载xml文档
loadXML = function(xmlFile)
{
var xmlDoc;
if(window.ActiveXObject)
{
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = false;
xmlDoc.load(xmlFile);
}
else if (document.implementation&&document.implementation.createDocument)
{
xmlDoc = document.implementation.createDocument('', '', null);
xmlDoc.load(xmlFile);
}
else
{
return null;
}
return xmlDoc;
}
xml文件对象出来了, 接下去我就要对这个文档进行操作了.
比如说,我们现在需要得到节点Login/Weapon/W的第一个节点的属性,那么我们可以如下进行.
// 首先对xml对象进行判断
checkXMLDocObj = function(xmlFile)
{
var xmlDoc = loadXML(xmlFile);
if(xmlDoc==null)
{
alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
window.location.href='/Index.aspx';
}
return xmlDoc;
}
// 然后开始获取需要的Login/Weapon/W的第一个节点的属性值
var xmlDoc = checkXMLDocObj('/EBS/XML/Login.xml');
var v = xmlDoc.getElementsByTagName('Login/Weapon/W')[0].childNodes.getAttribute('Text')
而我在我的程序中的写法是这样子的,当然我在程序中的写法是已经应用到实际中的了.一并给出来,以供查看
initializeSelect = function(oid, xPath)
{
var xmlDoc = checkXMLDocObj('/EBS/XML/Login.xml');
var n;
var l;
var e = $(oid);
if(e!=null)
{
n = xmlDoc.getElementsByTagName(xPath)[0].childNodes;
l = n.length;
for(var i=0; i<l; i++)
{
var option = document.createElement('option');
option.value = n[i].getAttribute('Value');
option.innerHTML = n[i].getAttribute('Text');
e.appendChild(option);
}
}
}
上面的访问代码中,我们是通过xmlDoc.getElementsByTagName(xPath)来进行的.
还可以通过xmlDoc.documentElement.childNodes(1)..childNodes(0).getAttribute('Text')进行访问.
一些常用方法:
xmlDoc.documentElement.childNodes(0).nodeName,可以得到这个节点的名称.
xmlDoc.documentElement.childNodes(0).nodeValue,可以得到这个节点的值. 这个值是来自于这样子的xml格式:<a>b</b>, 于是可以得到b这个值.
xmlDoc.documentElement.childNodes(0).hasChild,可以判断是否有子节点
根据我的经验,最好是使用getElementsByTagName(xPath)的方法对节点进行访问,因为这样子可以直接通过xPath来定位节点,这样子会有更好的性能.追问能简单点吗

追答这里面这么长其实都是介绍怎么操作Xml,以及举得相关的例子,不要被它的长度吓住

热心网友 时间:2023-10-24 02:43

我看到你网页是用ASP做的,里面并没有用到多线程,你可是用县城解决多用户登录的问题,还有就是说多用户登录会卡是应为你没有设置或者说编写一个缓冲器,这里就要涉及到缓冲机制了。你可以使用Spring框架或者Hibernate框架,不用再自己编写缓冲器!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
高考全国卷分为课标123,那甲乙丙是咋回事?听老师的意思陕西2016用的... 全国甲卷乙卷丙卷区别 全国乙卷什么时候取消 达州哪里有比较好的珠宝店? 达州德西尔珠宝在哪里? 360影视大全在荣耀6x上放就大黑边 360影视为什么点击全屏后还不能横看节目 额头骨瘤手术要住院吗 我的左额头有个骨瘤需要手术吗 合作者怎么造句 小米手机怎么卸载蓝牙更新 最新足球直播在哪看? 抽烟吐口水好么? 吸烟吐口水好不好? 抽烟的时候我把唾沫吐掉了,我没有烟瘾,还会有很多尼古丁残留么?请详细说下 吸烟时喝水对身体有是害处? 成都男子在地铁内吸烟并吐口水事件引发关注,如果你遇到了会怎么做? 湿疹在饮食方面有什么需要注意的吗 得了湿疹后在饮食方面需要注意什么 如何在手机上同时登陆两个QQ账号 常按头条图标,弹框清理栏,不是清理,而显示卸载,怎么办 交通工具上常备的灭火器种类 碗的由来 碗是怎么发明的 商务接待有哪些礼仪? 和平精英有没有mvp 未分配利润怎么进行利润分配 填上拟声词 1.微风吹来,树叶发出( )的声音 2.冬天,北风( )的刮着 下面还有 要卡通的萌小狗图片,不要太复杂的,有好评 收了个疫区来的快递好慌 快递放了10天还有新冠病毒吗 疫情期间中高风险地区的快递怎么收最安全 怎么把插入USB时的声音关掉? 插入USB发出的声音在哪里关闭呢? 插上USB之后的声音怎么去除啊? 怎么在QQ邮箱里做表格 怎样虚拟定位不被发现 我是淘宝卖家为啥在我发货的时填写的订单号总是显示格式不对 各位老师帮忙看看这花生是什么病害 请问这是花生什么病? 花生缺素,还有什么病害 薄荷叶的功效与作用和禁忌 为什么淘宝和小程序圆通速递显示物流不一样 淘宝地图小车和物流信息不匹配是怎么回事 支付宝的钱如何往卡里 海岩可可欧蕾热量高 中国乔丹鞋与美国乔丹鞋哪个先注册 乔丹体育的鞋没有码和商标 信用证按兑付的方式可以分为几种? 宝宝树怎么解除另一半绑定 商业信用属于长期负债资金的筹资方式 商业信用的期限