用dom获取xml属性值。求高手

用dom获取xml属性值。求高手,第1张

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import orgw3cdomDocument;

import orgw3cdomNode;

import orgw3cdomNodeList;

public class DomTest_02 {

/

@param args

/

public static void main(String[] args) throws Exception{

// TODO Auto-generated method stub

DocumentBuilderFactory dbf = DocumentBuilderFactorynewInstance();

DocumentBuilder db = dbfnewDocumentBuilder();

Document doc = dbparse("d:/nodexml");

// Element root = docgetDocumentElement();

Node root = docgetFirstChild();

if(rootgetNodeType() == NodeELEMENT_NODE){

String str1 = rootgetAttributes()getNamedItem("name")getNodeValue();

String str2 = rootgetAttributes()getNamedItem("alias")getNodeValue();

String str3 = rootgetAttributes()getNamedItem("group")getNodeValue();

Systemoutprintln("name="+str1+" alias="+str2+" group="+str3);

}

NodeList nodelist = rootgetChildNodes();

for(int j=0;j<nodelistgetLength();j++){

Node node = nodelistitem(j);

if(nodegetNodeType() == NodeELEMENT_NODE){

String s1 = nodegetAttributes()getNamedItem("number")getNodeValue();

String s2 = nodegetAttributes()getNamedItem("alias")getNodeValue();

Systemoutprintln("number="+s1+" alias="+s2);

}

}

}

}

给你个函数,传Node,属性名进去获取属性值,兼容所有浏览器:

function getAttributeValue (xmlNode,attrName){

if(!xmlNode)return "" ;

if(!xmlNodeattributes) return "" ;

if(xmlNodeattributes[attrName]!=null) return xmlNodeattributes[attrName]value ;

if(xmlNodeattributesgetNamedItem(attrName)!=null) return xmlNodeattributesgetNamedItem(attrName)value ;

return "" ;

}

获取 p1 的值,就是 getAttributeValue(p,"p1") ;

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 "";

}

}

SELECT masterdbofn_pcre_match('该段xml代码','<() value=()>')

获取xml中的字段信息,根据‘<() value ()>’该正则过滤出所有的信息,如果匹配到了,返回结果1,没匹配到就是0了

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;

}

实现思路:可以通过w3c的dom解析器进行 *** 作,之后通过getName获取到xmltpye中的属性值。

举例:

import javaioFile;

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import orgw3cdomDocument;

import orgw3cdomElement;

import orgw3cdomNodeList;

public class DomTest1

{

public static void main(String[] args) throws Exception

{

// step 1: 获得dom解析器工厂(工作的作用是用于创建具体的解析器)

DocumentBuilderFactory dbf = DocumentBuilderFactorynewInstance();

// Systemoutprintln("class name: " + dbfgetClass()getName());

// step 2:获得具体的dom解析器

DocumentBuilder db = dbfnewDocumentBuilder();

// Systemoutprintln("class name: " + dbgetClass()getName());

// step3: 解析一个xml文档,获得Document对象(根结点)

Document document = dbparse(new File("candidatexml"));

NodeList list = documentgetElementsByTagName("PERSON");

for(int i = 0; i < listgetLength(); i++)

{

Element element = (Element)listitem(i);

String content = elementgetElementsByTagName("NAME")item(0)getFirstChild()getNodeValue();

Systemoutprintln("name:" + content);

Systemoutprintln("--------------------------------------");

}

}

}

以上就是关于用dom获取xml属性值。求高手全部的内容,包括:用dom获取xml属性值。求高手、js解析xml的问题(如何获取某节点的属性)、如何提取不同XML数据模块的相同元素或属性的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存