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数据模块的相同元素或属性的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)