C# 如何得到一XML文件中指定的节点属性值

C# 如何得到一XML文件中指定的节点属性值,第1张

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

}

string ids = stringEmpty;

XmlDocument _document = new XmlDocument();

_documentLoad(ServerMapPath("~/XML文件名xml"));

XmlNode _xmlNode = _documentSelectSingleNode("slider");

XmlNode xmlNode = _xmlNodeSelectSingleNode(stringFormat("item[@name=\"{0}\"]", 条件变量名称));

if (xmlNode != null)

{

XmlNodeList xmlNodeList = xmlNodeSelectNodes("join");

foreach (XmlNode item in xmlNodeList)

{

href = GetNodeAttributeValue(item, "href");

//以下节点类似

}

}

private string GetNodeAttributeValue(XmlNode item, string attributeName)

{

if (item == null || itemAttributes[attributeName] == null || stringIsNullOrEmpty(itemAttributes[attributeName]Value))

return stringEmpty;

return itemAttributes[attributeName]Value;

}

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

}

string xml = @"<a id='1'><b id='2'><c id='3' other='fuuuuuuuuuuuu'></c> <c id='6'></c> </b> <b id='10'> <c id='12'></c> <c id='13'></c> </b></a>";

XmlDocument dom = new XmlDocument();

domLoadXml(xml);

var node = domSelectSingleNode("//c[@id='3']");

if(node!=null)

{

foreach(XmlAttribute att in nodeAttributes)

{

MessageBoxShow(attName + " :" + attValue);

}

}

呃,为什么要用ParentNode呢?该属性的父节点不就是node这个变量吗?

如果你想要的是node的父节点,那么可以用nodeParentNode 属性是不能用ParentNode的。

在XmlNode的ParentNode说明中有这样的一句,能够说明为什么会出异常:

ParentNode为当前节点父级的 XmlNode。对于所有其他节点,返回的值取决于节点的 NodeType。

Attribute、Document、DocumentFragment、Entity、Notation返回 null;这些节点不具有父级。

�0�2�0�2�0�2 最近遇到一个问题,用java解析xml时,需要获得一个xml文档中指定的某个节点,当然最简单的办法就是遍历所有的节点,如某个节点满足条件,则是我们要的结果,但我不想遍历所有的节点,因为这个问题只是一个复杂过程中的一小步,它会被反复调用,因此我需要最直接的方法获得某个已知属性值的确定节点。因此,这个问题也可以概括为:有没有根据节点(或name)属性名获得该节点的原api。

�0�2�0�2�0�2�0�2 具体一些,有如下xml文档:<sheet<field row="2" col="2" type="int"DEA_XZ</field2_2

<field row="2" col="3" type="string"RTP_ID</field2_3

<field row="2" col="4" type="string"DEA_YEAR</field2_4

<field row="2" col="7" type="int"DEA_RTP_TYPE</field2_7</sheet�0�2�0�2 我想获得row="2" col="3"的节点,据我所查,好像没有直接的方法。

�0�2�0�2 变通一下,xml修改如下:�0�2<sheet<field name="row2_col2" type="int"DEA_XZ</field2_2

<field name="row2_col3" type="string"RTP_ID</field2_3

<field name="row2_col4" type="string"DEA_YEAR</field2_4

<field name="row2_col7" type="int"DEA_RTP_TYPE</field2_7</sheet�0�2�0�2 这样呢?有没有直接的api,可以获得name为row2_col3的节点?同样,我也没有得到答案,大家有知道告诉小弟一下,不胜感激。

�0�2�0�2 实在没有办法,我就用了种“另类”的方式,xml如下:<sheet<field2_2 type="int"DEA_XZ</field2_2

<field2_3 type="string"RTP_ID</field2_3

<field2_4 type="string"DEA_YEAR</field2_4

<field2_7 type="int"DEA_RTP_TYPE</field2_7</sheet�0�2�0�2 这样看起来很不优雅,至少我是这么认为的。但这样却可以直接拿到你想要的节点:�0�2orgjdomElement root = documentgetRootElement();

�0�2�0�2 目前,我就是这样解决的,但我感觉很不优雅,我想我的xml文档(配置)文件应该保持第一种或第二种格式更好些。所以请大家帮忙,看看有没有直接的方法(api)

可以通过元素中的getText方法获取到节点的内容。

举例:

SAXReader sax = new SAXReader();

Document document = saxread(reader);//reader为定义的一个字符串,可以转换为xml

Element root = documentgetRootElement();//获取到根节点元素String str = root getText()//获取到节点的内容

用到的是dom4j-161jar,需要引入的包是:

import orgdom4jDocument;

import orgdom4jDocumentException;

import orgdom4jElement;

import orgdom4jioSAXReader;

备注:如果是多个子节点可以通过”Element xx=root element("code")“获取到子节点的元素,前提是需要知道子节点的名称。

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

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

原文地址:https://54852.com/web/9637500.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存