xnode.SelectNodes("//a/name");我需要把有  "//a/name" 的所有节点选择出来,不区分大小写,如何办?

解决方案 »

  1.   

    try:static ArrayList nodeList = new ArrayList(); [STAThread]
    static void Main(string[] args)
    {
    string sXml = "<root><a><name>A</name></a><A><Name>B</Name></A><a></a></root>";
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.LoadXml(sXml); nodeList.Clear();
    Parse(xmldoc); foreach(XmlNode node in nodeList)
    {
    Console.WriteLine(node.OuterXml);
    }
    Console.ReadLine();
    }static void Parse(XmlNode node)
    {
    if(node == null)
    {
    return;
    }
    if(node.Name.ToLower() == "a" && node.FirstChild != null && node.FirstChild.Name.ToLower() == "name")
    {
    nodeList.Add(node);
    }
    foreach(XmlNode n in node.ChildNodes)
    {
    Parse(n);
    }
    }
      

  2.   

    static void Parse(XmlNode node) ->>>static void Parse(XmlNode node)
    {
    if(node == null)
    {
    return;
    }
    if(node.Name.ToLower() == "a")
    {
    foreach(XmlNode n in node.ChildNodes)
    {
    if(n.Name.ToLower() == "name")
    {
    nodeList.Add(n);
    }
    }
    }
    foreach(XmlNode n in node.ChildNodes)
    {
    Parse(n);
    }
    }
      

  3.   

    如果不是Xpath本身需要支持非大小写敏感,可以使用msxml的扩展,ms:string-compare,忽略大小写
    这里应该只有自己实现(出现这种需求,XML文档本身看来就很不规范)
      

  4.   

    Sunmast(速马|一切皆有可能) 说的很有道理如果不是Xpath本身需要支持非大小写敏感,可以使用msxml的扩展,ms:string-compare,忽略大小写
    这里应该只有自己实现(出现这种需求,XML文档本身看来就很不规范)