微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML——SelectSingleNode 获取有命名空间的节点的值

1. XML文件

<?xml version="1.0" encoding="utf-8"?>
<dataConfiguration>
  <xmlSerializerSection type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,Microsoft.Practices.EnterpriseLibrary.Data,Version=1.1.0.0,Culture=neutral,PublicKeyToken=c47c1bfbe00161e3">
    <enterpriseLibrary.databaseSettings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" defaultInstance="Database Instance" xmlns="http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/data">
      <databaseTypes>
        <databaseType name="sql Server" type="Microsoft.Practices.EnterpriseLibrary.Data.sql.sqlDatabase,PublicKeyToken=c47c1bfbe00161e3" />
      </databaseTypes>
      <instances>
        <instance name="Database Instance" type="sql Server" connectionString="sql Connection String" />
      </instances>
      <connectionStrings>
        <connectionString name="sql Connection String">
          <parameters>
            <parameter name="server" value="server\sqlServer2005" isSensitive="false" />
            <parameter name="database" value="db" isSensitive="false" />
            <parameter name="user id" value="user" isSensitive="false" />
            <parameter name="password" value="pwd" isSensitive="true" />
            <parameter name="integrated security" value="False" isSensitive="false" />
            <parameter name="connection timeout" value="3600" isSensitive="false" />
          </parameters>
        </connectionString>
      </connectionStrings>
    </enterpriseLibrary.databaseSettings>
  </xmlSerializerSection>
</dataConfiguration>

2. C#获取
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            test();
            Console.Read();
        }

        static void test()
        {
            XmlDocument xml = new XmlDocument();
            xml.Load(@"H:\download\dataconfiguration.config");

            XmlNamespaceManager xnm = new XmlNamespaceManager(xml.NaMetable);
            xnm.AddNamespace("ns","http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/data");
            
            string DataSourceXpath = "/dataConfiguration/xmlSerializerSection/ns:enterpriseLibrary.databaseSettings/ns:connectionStrings/ns:connectionString/ns:parameters/ns:parameter[@name='server']/@value";
            string server = xml.DocumentElement.SelectSingleNode(DataSourceXpath,xnm).Value;
            Console.WriteLine(server);
        }
    }
}


其中最需要注意的是从有命名空间的节点开始, 就要一直加命名空间的前缀了。

原文地址:https://www.jb51.cc/xml/295975.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。