
//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文件中指定的节点属性值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)