c# xPathDocument读取xml节点属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# xPathDocument读取xml节点属性相关的知识,希望对你有一定的参考价值。

请问下谁知道C# XPathDocument 怎么读取xml节点的属性?详细点最好是有个实例

参考技术A static void Main(string[] args)

//创建实例
XmlDocument xml = new XmlDocument();
//读取XML文档
xml.Load("XMLFile1.xml");
//读取根节点
XmlNode channel = xml.DocumentElement;//对子节点进行循环
foreach (XmlNode node in channel.ChildNodes)

switch (node.Name)

case "title":
Console.WriteLine("标题:0",node.InnerText);
break;
case "description":
Console.WriteLine("描述:0", node.InnerText);
break;
case "link":
Console.WriteLine("链接:0", node.InnerText);
break;
case "item":
foreach (XmlNode childnode in node.ChildNodes)

//重复操作



补上XML文件: <?xml version="1.0" encoding="utf-8" ?>
<channel>
<title>新闻频道</title>
<description>新浪新闻频道</description>
<link> http://new.sina.com</link>
<item>
<title>欧文</title>
<link>连接</link>
<description>欧文是睡</description>
</item>
</channel>
参考技术B /根节点名/节点名[@节点属性名=节点属性值]/
例:
<xml>
<a name="123">asd</a>
<b name="321">dsa</b>
<b name="123">dsa</b>
</xml>
预取到节点b,name属性值为123的节点,可用如下XPath
/xml/b[@name=123]/
具体参考:
XPathDocument用法与详解
http://hi.baidu.com/dongbaoge/blog/item/82aabc0f7faa23eaab64573a.html
XPath语法与详解
http://www.w3school.com.cn/xpath/xpath_syntax.asp

C#在xml文件中指定节点插入节点和属性

<TableColumns>
<TableColumn id="MIEdIndex">
<Width>6.61471cm</Width>
</TableColumn>
<TableColumn id="IndexUnit">
在这里插入节点和属性
<Width>2.19578cm</Width>
</TableColumn>
<TableColumn id="MIEdQty">
<Width>2.88487cm</Width>
</TableColumn>
<TableColumn id="MIEdAoyQty">
<Width>2.85988cm</Width>
</TableColumn>
<TableColumn id="MIEdUpQty">
<Width>2.83488cm</Width>
</TableColumn>
<TableColumn id="MIEdUpAoyQty">
<Width>2.85988cm</Width>
</TableColumn>
</TableColumns>
插入节点后代码为这样,哪位大神帮帮忙
<TableColumns>
<TableColumn id="MIEdIndex">
<Width>6.61471cm</Width>
</TableColumn>
<TableColumn id="IndexUnit">
<Visibility>
<Hidden>true</Hidden>
</Visibility>
<Width>2.19578cm</Width>
</TableColumn>
<TableColumn id="MIEdQty">
<Width>2.88487cm</Width>
</TableColumn>
<TableColumn id="MIEdAoyQty">
<Width>2.85988cm</Width>
</TableColumn>
<TableColumn id="MIEdUpQty">
<Width>2.83488cm</Width>
</TableColumn>
<TableColumn id="MIEdUpAoyQty">
<Width>2.85988cm</Width>
</TableColumn>
</TableColumns>

      private void button1_Click(object sender, EventArgs e)

        
            string File = @"c:\\TableColumns.xml";
            System.Xml.XmlDocument xmlDoc=new System.Xml.XmlDocument();
            xmlDoc.Load(File);
            System.Xml.XmlNode xn = xmlDoc.DocumentElement.SelectSingleNode("TableColumns/TableColumn[@id=\\"IndexUnit\\"]");//读取id=IndexUnit的TableColumn节点,在xml教材中的xPath章节专门介绍这种查询方法。
            System.Xml.XmlElement vs=xmlDoc.CreateElement("Visibility");//创建新节点
            System.Xml.XmlElement Hd = xmlDoc.CreateElement("Hidden");
            Hd.InnerText = "true";
            vs.AppendChild(Hd);//添加为子节点
            xn.AppendChild(vs);
            xmlDoc.Save(File);

追问

但是这个节点取不上啊,一调试显示为空,为什么呢

追答

你把我测试的xml文本放到c:\\中试试,我是能通过的。有没有用<xml> </xml>标签把文本包起来?

参考技术A 请查询参考书c#对xml的应用,里面涉及到多有操作追问

急用,代码怎么实现呢,麻烦您了

追答

我已经4年没写了,只是以前做过xml项目,全照参考书上写的

追问

好吧,再想想办法把,主要是这节点里面有个id号呢,不知道怎么读取

以上是关于c# xPathDocument读取xml节点属性的主要内容,如果未能解决你的问题,请参考以下文章

C#如何读取XML中指定的节点值?

C# XML 如何直接根据属性值 读取 对应的值 怎么写???

用C#读取XML文件,怎么可以循环读取

C#读取xml

c#读取XML多级子节点

无法使用 c# 从 xml 读取值/节点