C#操作XML,如何获取指定节点值?
博客园提问,结合网友回答http://q.cnblogs.com/q/36082/
打开是treelist树形显示xml所有节点,递归来实现
xmlDoc = new XmlDocument();
xmlDoc.Load(filename);
XmlNode node = xmlDoc.DocumentElement; TreeListNode rootNode = treeListNode.AppendNode(new object[] { node.Name }, -, node);
GenerateNodeTree(rootNode, node);
private void GenerateNodeTree(TreeListNode rootNode, XmlNode node)
{
for (int i = ; i < node.ChildNodes.Count; i++)
{
XmlNode xnl = node.ChildNodes[i];
TreeListNode childNode = treeListNode.AppendNode(new object[] { xnl.Name }, -, xnl);
treeListNode.MoveNode(childNode, rootNode);
GenerateNodeTree(childNode, xnl);
}
}
我用的treelist控件控件进行各个节点的显示,treelist的第一列存xmlnode.name,第二列是
xmlnode.value,tag是node。所以修改后,可以遍历这些节点值或者注释的父节点下的所有子节点,= tag的就是这个修改的节点,设置其value后保存即可
其中
xmlDoc是一个全局变量,打开时给他赋值,以后不重复打开了。如果重复打开同一文件判断
(xnl == node)时很可能不相等
/// <summary>
/// 修改 <a>text</a> 里的text,防止内部有注释或者更多注记。此函数仍不好用,复杂的就无法处理了,需改进
/// </summary>
/// <param name="xmlpath">The xmlpath.</param>
/// <param name="node">The node.</param>
/// <param name="value">The value.</param>
private void UpdateInnerXml(string xmlpath, string nodename, string value, XmlNode node)
{
try
{
XmlNode xn = xmlDoc.SelectSingleNode(nodename);
XmlNode xnl = null;
bool exist = false;
////理论上这里可以找到一个子节点Name == "#text"且=treelist node的tag,如果没找到再考虑截位
for (int i = ; i < xn.ChildNodes.Count; i++)
{
xnl = xn.ChildNodes[i];
if (xnl == node)
{
exist = true;
break;
}
}
if ((xnl != null) && exist)
{
xnl.Value = value;
node.Value = value;
}
else
{
XmlElement xe = (XmlElement)xn;
////截取xe.InnerXml中xe.InnerText部分替换为修改内容,有与xe.InnerText相同的其他地方就无法处理了
xe.InnerXml = xe.InnerXml.Substring(, xe.InnerXml.IndexOf(xe.InnerText)) + value + xe.InnerXml.Substring(xe.InnerXml.IndexOf(xe.InnerText) + xe.InnerText.Length);
}
xmlDoc.Save(xmlpath);
}
catch
{
}
}
C#操作XML,如何获取指定节点值?的更多相关文章
- XML操作 之获取指定节点值
根据节点名称快速查找 指定节点值 using (TextReader stringReader = new StringReader(clearPassResponse)) { XmlReaderSe ...
- 从UEditor内容中获取指定节点值(转)
今天吐槽一下百度的富文本编辑器UEditor,这种富文本编辑器极大地方便我们上传文件,开发人员无需编写任何上传代码,只需配置几个路径即可.但高度集成的东西有时也显得笨重,灵活度不高.比如:编辑器中我既 ...
- (转载)读取xml中的指定节点的值
/// <summary> /// 读取xml中的指定节点的值 /// </summary> private st ...
- 读取xml中的指定节点的值
/// <summary> /// 读取xml中的指定节点的值 /// </summary> private string ReadXmlNode(string filenam ...
- Jmeter 通过json Extracted 来获取 指定的值的id
在没有 精确或模糊查询的接口时可以使用jmeter 获取指定的值的ID import java.lang.String ; String getTargetName="iphone632g& ...
- C#:Json数据反序列化为Dictionary并根据关键字获取指定的值
转自曾是土木人原文 C#:Json数据反序列化为Dictionary并根据关键字获取指定的值 Json数据: { "dataSet": { "header": ...
- Oracle数据库 获取CLOB字段存储的xml格式字符串指定节点的值
参照: Oracle存储过程中使用游标来批量解析CLOB字段里面的xml字符串 背景:在写存储过程时,需要获取表单提交的信息.表单信息是以xml格式的字符串存储在colb类型的字段dataxml中,如 ...
- xml获取指定节点的路径
引用自http://www.w3school.com.cn/xpath/xpath_syntax.asp XPath 语法 Previous Page Next Page XPath 使用路径表达式来 ...
- 读取XML文件的指定节点的值 并转换为Item
cmb_State_Send.ItemsSource = null; XmlDocument doc = new XmlDocument(); doc.Load("D:\\模板\\Works ...
随机推荐
- 使用delegate实现简单的查询功能
protected void imgbtnSearch_Click(object sender, System.Web.UI.ImageClickEventArgs e) { string keyWo ...
- java之自定义回调接口
本质上为:传递不同的实现的接口实例,执行不同的程序,即有扩展性. 在一个方法中,可以实现一个对象中的接口,实例化该接口,即可完成对不同对象的不同回掉. 在原有类中,调用接口中的方法,根据不同的接口实例 ...
- 转载--web前端35个jQuery小技巧!
1. 禁止右键点击$(document).ready(function(){ $(document).bind("contextmenu",function(e){ ...
- ActiveMQ_Linux安装(一)
一.下载:apache-activemq-5.14.0-bin.tar.gz http://activemq.apache.org/activemq-5140-release.html 二.安 ...
- python中的二维数组和lamda
python列表推导式 list=[[0 for i in xrange(3)] for j in xrange(4)] 二维数组 g=lambda x,y:x*y; print g(2,9);
- Swift 中的指针使用
SWIFT 中 指针被映射为泛型 UnsafePointer<T> UnsafeMutablePointer<T> 表示一组连续数据指针的 UnsafeBufferPoint ...
- Jquery-下拉列表设置默认选择
$('#select option:eq(2)').attr('selected','selected');
- WordPress翻译中 __()、_e()、_x、_ex 和 _n 的用法及区别
编译函数 WordPress使用了下面几个函数来方便语言本地化. __() _e() _x() _ex() _n() 以上所列的函数是用来包含所需翻译的字符串的,根据字符串的不同参数和输出类型,需要使 ...
- Java类加载器总结
1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示: 1) 装载:查找并加载类的二进制数据: 2)链 ...
- Echarts3
今天用想在后台首页做个图表,看到highcharts没用喜欢的样式 想起了Echarts,百度了下,发现不一样了呢,原来出了Echarts3 感觉这个比Echarts2好用多了 下载了个精简版,ech ...