1、javascript是一种脚本语言,是有一定安全限制的,不知道你打算通过xmlDoc.save("XmlData/about.xml")把about.xml文件保存到客户端还是服务器端,如果是服务器端那是不可能的,需要自己写activex控件
2、javascript只能 *** 作浏览器内存中的dom对象,另存为xml文件一般是没有意义的
3、如果把xml文件保存到客户端这么做也不好,一般的杀毒软件也许会报为病毒,如果保存到客户端,我以前的办法是用applet数字签名,然后再保存
JavaScript *** 作 XML 需要使用 XML DOM,它和 HTML DOM 很相似。
为什么 innerHTML 等 HTML DOM 属性、方法不能 *** 作 XML?原因很简单,就像 HTML 是 XML 的特殊实例一样,HTML DOM 也是专门优化过的,有的 *** 作只能专用于 HTML。
而 XML DOM 则对于任何 XML 及其子集语言编写的文件都通用,因此它的 *** 作更加原始,步骤也比较复杂。下面举一个例子说明。
假设需要处理的 XML 文件是“example.xml”。
<?xml version="1.0" encoding="UTF-8"?><school id="s0">
<grade id="g0" number="1">
<!--在这里插入子节点-->
</grade>
<grade id="g1" number="2"></grade>
<grade id="g2" number="3"></grade>
</school>
现在为“<grade id="g0" number="1"></grade>”节点插入一个子节点“<class>Class 101</class>”。注意在 XML 中,“Class 101”这样的单纯文字内容也被视为节点,即文本节点。
下面是 JavaScript 代码(宿主环境为浏览器,因此需要把代码放在一个 HTML 文件中执行)。
//加载 XML 文档的函数(这个函数的具体实现可以忽略)function loadXMLDoc(xmlFile){
var xmlDoc
try{
//Internet Explorer 可以使用其原生方法加载 XML
xmlDoc=new ActiveXObject("Microsoft.XMLDOM")
}catch(e){
try{
//Firefox 也有标准方法,但可能造成其他浏览器报错,故省略
//使用 XMLHttpRequest 替代,适用于大部分浏览器
var xmlHttp = new XMLHttpRequest()
xmlHttp.open("GET",xmlFile,false)
xmlHttp.send(null)
return xmlHttp.responseXML
}catch(e){
return null
}
}
xmlDoc.async=false
xmlDoc.load(xmlFile)
return xmlDoc
}
var xml=loadXMLDoc("example.xml") //加载XML文件
var elemC0=xml.createElement("class") //创建一个元素节点
var text0=xml.createTextNode("Class 101") //创建一个文本节点
elemC0.appendChild(text0) //添加文本节点
var elemG0=xml.getElementsByTagName("grade")[0] //获取需插入的父节点
elemG0.appendChild(elemC0) //添加为子节点
假设你的xml为stu.xml---------------那么--------------
$doc = new DOMDocument()
$doc->load( 'stu.xml' )
$students = $doc->getElementsByTagName( "xuesheng" )
foreach($students as $stu){
$yuwen = $stu->getElementsByTagName( "yuwen" )->item(0)->nodeValue
$shuxue = $stu->getElementsByTagName( "shuxue" )->item(0)->nodeValue
$yingyu = $stu->getElementsByTagName( "yingyu" )->item(0)->nodeValue
$zongfen = $stu->getElementsByTagName( "zongfen" )->item(0)->nodeValue
if($zongfen){
echo "节点已经存在了,不再添加!"
continue
}
$zongfen = $yuwen+$shuxue+$yingyu
$newNode = $doc->createElement("zongfen",$zongfen)
$stu->appendChild($newNode)
}
echo $result = $doc->saveXML()
file_put_contents("stu.xml",$result) //这句其实是不需要加上的- - 但是我也不晓得为什么save不了,就加了这句~
希望对你有用哦~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)