js怎么获取xml里某个节点的值并输出

js怎么获取xml里某个节点的值并输出,第1张

1、用 childNodes 属性,按顺序取

实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。

//pId 待取节点父节点序号

//cId 待取节点序号

function getXmlNodeValue(pId, cId) {

    var xmlDoc = new ActiveXObject("MicrosoftXMLDOM");

    xmlDocasync = false;

xmlDocload("employeeInfoxml");

var nodes = xmlDocdocumentElementchildNodes[pId]childNodes[cId];return nodeschildNodes[0]text;

}

调用方法:alert(getXmlNodeValue(1, 2));

2、用 for 循环来取

实现过程:首先创建一个 ie 支持的 xml 对象,如果发生异常,是创建一个 FireFox 支持的空 xml 对象并返回空;然后载入 xml 文件,如要发生异常也返回空;最后,通过 for 循环遍历查找与传入的节点值相同的节点,找到后返回属于该节点的属性值。

//nodeValue 待取节点的所属节点值

function getXmlNodeValueFor(nodeValue){    

    var xmlDoc; 

  try { 

    //创建一个 ie 支持的 XML 文档对象 

    xmlDoc = new ActiveXObject("MicrosoftXMLDOM");

  }catch(e){

      try{

      //创建FireFox空的XML文档对象

      xmlDoc=documentimplementationcreateDocument("","",null);

}catch(e){

  alert(emessage);

  return "";

}

}

xmlDocasync = false;

try { 

    xmlDocload("employeeInfoxml");

}catch(e){

    alert(emessage);

    return "";

}

var xd=xmlDocdocumentElementchildNodes;

if(xd==null) 

    return "";

 var tempValue;

for(var i=0;i<xdlength;i++){

    if(xd[i]childNodes[0]childNodes[0]nodeValue==nodeValue)        tempValue=xd[i]childNodes[2]childNodes[0]nodeValue;

}

return tempValue;

}

调用方法:alert(getXmlNodeValueFor("王佳琳"));

在你的代码的<html>标签替换成

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Transitional//EN" ">

常用 如下 几行

header("content type:text/; charset=utf "); //指定PHP使用UTF 编码 $xml = simplexml_load_file("example xml"); //读取xml文件 $newxml = $xml >asXML(); //标准化$xml $fp = fopen("newxml xml" "w"); //新建xml文件 fwrite($fp $newxml); //写入 xml文件 fclose($fp);

PHP可以方便的生成和读取XML文件 PHP主要通过DOMDocument DOMElement和DOMNodeList来完成XML的读取与写入 *** 作的 下面就简要说明下如何使用这些类

一.生成XML文件 对于一个如下XML文件

[] <xml version=" " encoding="UTF "> <article> <title>PHP访问MySql数据库 初级篇</title> <link> </article> <xml version=" " encoding="UTF "> <article> <title>PHP访问MySql数据库 初级篇</title> <link> </article> 我们来看看如何用PHP来生成

首先new一个DOMDocument对象并设置编码格式

$dom = newDOMDocument( UTF );

$dom >formatOutput= true;

再创建<article>结点和<title>结点

$rootelement =$dom >createElement("article");

$title =$dom >createElement("title" "PHP访问MySql数据库 初级篇");

然后创建带文本内容的<link>结点

$link =$dom >createElement("link" "

也可以先生成<link>结点再为其添加文本内容

$link = $dom >createElement("link");

$linktext =$dom >createTextNode( );

$link >appendChild($linktext);

然后将<title>和<link>结点加入到<article>结点中去

$rootelement >appendChild($title);

$rootelement >appendChild($link);

最后将<article>结点加入到DOMDocument对象中

$dom >appendChild($rootelement);

这样一个完整的XML就生成完毕了 再整出整个XML

echo $dom >saveXML() ;

saveXML()也可以只输入部分XML文本 如echo $dom >saveXML($link);就只会输出<link>结点 <link>

下面再给出一个完整的PHP中数据内容输出到XML文件的例子 该例子会对将一个PHP数组输出到XML文件中

[php] <php //将数组输出到XML文件中 // by MoreWindows( $article_array = array( "第一篇" => array( "title"=>"PHP访问MySql数据库 初级篇" "link"=>" ) "第二篇" => array( "title"=>"PHP访问MySql数据库 中级篇 Smarty技术" "link"=>" ) "第三篇" => array( "title"=>"PHP访问MySql数据库 高级篇 AJAX技术" "link"=>" ) ); $dom = new DOMDocument( UTF ); $dom >formatOutput = true; $rootelement = $dom >createElement("MoreWindows"); foreach ($article_array as $key=>$value) { $article = $dom >createElement("article" $key); $title = $dom >createElement("title" $value[ title ]); $link = $dom >createElement("link" $value[ link ]); $article >appendChild($title); $article >appendChild($link); $rootelement >appendChild($article);

} $dom >appendChild($rootelement); $filename = "D:test xml"; echo XML文件大小 $dom >save($filename) 字节 ; > <php //将数组输出到XML文件中 // by MoreWindows( $article_array = array( "第一篇" => array( "title"=>"PHP访问MySql数据库 初级篇" "link"=>" ) "第二篇" => array( "title"=>"PHP访问MySql数据库 中级篇 Smarty技术" "link"=>" ) "第三篇" => array( "title"=>"PHP访问MySql数据库 高级篇 AJAX技术" "link"=>" ) ); $dom = new DOMDocument( UTF ); $dom >formatOutput = true; $rootelement = $dom >createElement("MoreWindows"); foreach ($article_array as $key=>$value) { $article = $dom >createElement("article" $key); $title = $dom >createElement("title" $value[ title ]); $link = $dom >createElement("link" $value[ link ]); $article >appendChild($title); $article >appendChild($link); $rootelement >appendChild($article); } $dom >appendChild($rootelement); $filename = "D:test xml"; echo XML文件大小 $dom >save($filename) 字节 ; > 运行该PHP会在D盘上生成test xml文件(Win + XAMPP + IE 测试通过)

二.读取XML文件 以读取前文中生成的D:test xml为例

[php] <php //读取XML文件 // by MoreWindows( $filename = "D:test xml"; $article_array = array(); $dom = new DOMDocument( UTF ); $dom >load($filename); //得到<article>结点 $articles = $dom >getElementsByTagName("article"); echo <article> 结点个数 $articles >length; foreach ($articles as $article) { $id = $article >getElementsByTagName("id") >item( ) >nodeValue; $title = $article >getElementsByTagName("title") >item( ) >nodeValue; $link = $article >getElementsByTagName("link") >item( ) >nodeValue; $article_array[$id] = array( title =>$title link =>$link); } //输出结果 echo "<pre>"; var_dump($article_array); echo "</pre>"; > <php //读取XML文件 // by MoreWindows( $filename = "D:test xml"; $article_array = array();

$dom = new DOMDocument( UTF ); $dom >load($filename);

//得到<article>结点 $articles = $dom >getElementsByTagName("article"); echo <article> 结点个数 $articles >length; foreach ($articles as $article) { $id = $article >getElementsByTagName("id") >item( ) >nodeValue; $title = $article >getElementsByTagName("title") >item( ) >nodeValue; $link = $article >getElementsByTagName("link") >item( ) >nodeValue; $article_array[$id] = array( title =>$title link =>$link); }

lishixinzhi/Article/program/PHP/201311/20909

关于tinyxml使用的文档有很多(这篇文章就写的很好),这里仅提一下字符编码的转换问题,如果你不熟悉字符编码最好先阅读一下计算机内存和文件中的UNICODE字符

tinyxml定义的类或函数中涉及的字符大都是char,字符串指针也是char或const char,看一下面几个函数:

const char TiXmlElement::Attribute( const char name ) const

int TiXmlElement::QueryIntAttribute( const char name, int ival ) const

这样在你的应用程序中获取的字符串就是const char类型,如果你的XML文档指定是UTF-8编码(注意保存的时候也是以UTF-8编码方式保存的),例如:

<xml version="10" encoding="UTF-8">

<root>

<item>中文字符</item>

</root>

而你的应用程序可能是UNICODE,也可能是多字节,那么在应用程序中会这样读xml文档:

TiXmlDocument doc("UTF8testxml");

docLoadFile(TIXML_DEFAULT_ENCODING);//TIXML_DEFAULT_ENCODING指明按照UTF-8编码方式读取xml文档

TiXmlElement root = docRootElement();

TiXmlNode node = root->FirstChild("item");

TiXmlElement element = node->ToElement();

const char text = element->GetText();

以上就是关于js怎么获取xml里某个节点的值并输出全部的内容,包括:js怎么获取xml里某个节点的值并输出、asp读取xml报错:系统不支持指定的编码方式、PHP读写XML文件技巧等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9296288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存