如何获取xml中某个节点的值

如何获取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;

}

using SystemXml;

//初始化一个xml实例

XmlDocument xml=new XmlDocument();

//导入指定xml文件

xmlLoad(path);

xmlLoad(>

//xmlFile是xml文件,nodeName是节点名,attributeName是节点的属性名,因为节点名是可以重复的,所以用list存放返回值

public List<string> GetAttribute(string xmlFile, string nodeName, string attributeName)

{

List<string> retList = new List<string>();

XmlDocument xx = new XmlDocument();

xxLoad(xmlFile);

XmlNodeList xxList = xxGetElementsByTagName(nodeName);

foreach (XmlNode xxNode in xxList)

{

retListAdd(xxNodeAttributes[attributeName]Value);

}

return retList;

}

下个dom4j包我下面的方法笨了点不知道还有好的不

import javaioFile;

import javautilIterator;

import orgdom4j;

import orgdom4jioSAXReader;

public class ResultXmlTest1 {

public static void main(String args[])

{

SAXReader reader=new SAXReader();

try

{

Document doc=readerread(new File("resultxml"));

Element root=docgetRootElement();

for(Iterator ite=rootelementIterator();itehasNext();)

{

Element ele=(Element)itenext();

for(Iterator iter=eleelementIterator();iterhasNext();)

{

Element elem=(Element)iternext();

//Systemoutprintln(elemgetName());

for(Iterator itera=elemelementIterator();iterahasNext();)

{

Element eleme=(Element)iteranext();

//Systemoutprintln(elemegetName());

for(Iterator iterat=elemeelementIterator();iterathasNext();)

{

Element elemem=(Element)iteratnext();

//Systemoutprintln(elememgetName());

for(Iterator iterato=elememelementIterator();iteratohasNext();)

{

Element elememe=(Element)iteratonext();

//Systemoutprintln(elememegetName());

for(Iterator last=elememeelementIterator();lasthasNext();)

{

Element elemLast=(Element)lastnext();

//Systemoutprintln(elemLastgetName());

for(Iterator at=elemLastattributeIterator();athasNext();)

{

Attribute att=(Attribute)atnext();

if(attgetName()equals("start"))

Systemoutprintln(attgetText());

}

}

}

}

}

}

}

}catch(DocumentException e)

{

eprintStackTrace();

}

}

}

C# *** 作XML 有以下几种方式:

1:使用XmlDocument相关类库和方法 *** 作xml

2:使用XDocument相关类库和方法 *** 作xml

3:使用XmlReader和XmlWriter相关类库和方法 *** 作xml

获得指定节点的值也需要 分为属性和元素

1:使用XmlDocument

XmlDocument doc = new XmlDocument();

docLoad("Customer2xml");

// XmlNodeList nodeList = docGetElementsByTagName("row");

XmlNodeList nodeList = docSelectNodes("/Table/row");

//读取属性+元素

foreach (XmlNode item in nodeList)

{

customerInfoAppId = itemAttributes["AppID"]Value;

customerInfoCustomerID = item["CustomerID"]InnerText;

}

2:使用XDocument

XDocument xdoc = XDocumentLoad("Customer2xml");

var custs = from customer in xdocDescendants("row")

select new

{//读取属性+元素

Version = customerAttribute("Version")Value,

CustomerID = customerElement("CustomerID")Value,

};

3:使用XmlReader

XmlReader reader = XmlReaderCreate("Customer2xml", settings);

//读取属性

while (readerRead())

{

if (readerNodeType == XmlNodeTypeElement)

{

switch (readerName)

{

case "row":

customerInfo = new CustomerInfo();

if (readerHasAttributes)

{

customerInfoAppId = readerGetAttribute("AppID");

customerInfoVersion = readerGetAttribute("Version");

}

break;

case "CustomerID":

customerInfoCustomerID = readerReadString();

break;

}

}

import w c dom ;

import javax xml parsers ;

import java io ;

public class Parse{

//Document可以看作是XML在内存中的一个镜像 那么一旦获取这个Document 就意味着可以通过对

//内存的 *** 作来实现对XML的 *** 作 首先第一步获取XML相关的Document

private Document doc=null;

public void init(String xmlFile) throws Exception{

//很明显该类是一个单例 先获取产生DocumentBuilder工厂

//的工厂 在通过这个工厂产生一个DocumentBuilder

//DocumentBuilder就是用来产生Document的

DocumentBuilderFactory dbf=DocumentBuilderFactory newInstance();

DocumentBuilder db=dbf newDocumentBuilder();

//这个Document就是一个XML文件在内存中的镜像

doc=db parse(new File(xmlFile));

}

//该方法负责把XML文件的内容显示出来

public void viewXML(String xmlFile) throws Exception{

this init(xmlFile);

//在xml文件里 只有一个根元素 先把根元素拿出来看看

Element element=doc getDocumentElement();

System out println( 根元素为: +element getTagName());

NodeList nodeList=doc getElementsByTagName( dbstore );

System out println( dbstore节点链的长度: +nodeList getLength());

Node fatherNode=em( );

System out println( 父节点为: +fatherNode getNodeName());

//把父节点的属性拿出来

NamedNodeMap attributes=fatherNode getAttributes();

for(int i= ;i<attributes getLength();i++){

Node attribute=em(i);

System out println( dbstore的属性名为: +attribute getNodeName()+ 相对应的属性值为: +attribute getNodeValue());

}

NodeList childNodes = fatherNode getChildNodes();

System out println(childNodes getLength());

for(int j= ;j<childNodes getLength();j++){

Node childNode=em(j);

//如果这个节点属于Element 再进行取值

if(childNode instanceof Element){

//System out println( 子节点名为: +childNode getNodeName()+ 相对应的值为 +childNode getFirstChild() getNodeValue());

System out println( 子节点名为: +childNode getNodeName()+ 相对应的值为 +childNode getFirstChild() getNodeValue());

}

}

}

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

Parse parse=new Parse();

//我的XML文件

parse viewXML( netct xml );

}

lishixinzhi/Article/program/Java/hx/201311/26710

string

strxml

=

"<root><a

b='1'

c='2'

d='3'>content</a></root>";

XmlDocument

doc

=

new

XmlDocument();

docLoadXml(strxml);

foreach

(XmlAttribute

att

in

docSelectSingleNode("//a")Attributes)

{

//

循环读取每个属性

string

attName

=

attName;

//

得到属性名

string

attVal

=

attValue;

//

得到属性值

}

这个docSelectSingleNode("//a")Attributes得到的就是所有属性的集合。

以上就是关于如何获取xml中某个节点的值全部的内容,包括:如何获取xml中某个节点的值、firefox如何获取xml文档节点下子节点的属性、C# 如何得到一XML文件中指定的节点属性值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存