如题:现有一个XML文件a.xml如下:<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.163.com/rss/0.9">
  <Header>头</Header>
  <Items>
    <Item>
      <Value>内容</Value>
    </Item>
    <Item>
      <Value>内容</Value>
    </Item>
  </Items>
  <Footer>脚</Footer>
</root>怎么去掉这句话 xmlns="http://www.163.com/rss/0.9"

解决方案 »

  1.   

    这个问题 我遇到过
    当你家了头标签之后
    当你查询的时候就变成两张表了
    你可以这样
             DataSet ds = new DataSet();
            ds.ReadXml(Server.MapPath("XMLFile1.xml"));
            DataTable dt = new DataTable();
             if (ds.Tables.Count != 0)
            {
                dt = ds.Tables[1];
            }
            else
            {
                 dt = ds.Tables[0];        }
    你先试试
      

  2.   

    你是想查的时候不要那句话
    还是去掉那个属性啊
    还是<root xmlns="">
      

  3.   

    我需要的是修改不是查询:
    修改后得到的结果是<?xml version="1.0" encoding="utf-8"?>
    <root>
      <Header>头</Header>
      <Items>
        <Item>
          <Value>内容</Value>
        </Item>
        <Item>
          <Value>内容</Value>
        </Item>
      </Items>
      <Footer>脚</Footer>
    </root>
      

  4.   

            XmlDocument xmld = new XmlDocument();//构建xml文档   
            xmld.Load(Server.MapPath("XMLFile1.xml"));//加载   
            XmlNodeList list = xmld.SelectSingleNode("today").ChildNodes;//获取子节点   
            XmlNode node = xmld.LastChild;
            XmlNode root = xmld.SelectSingleNode("today");
            XmlElement xmlsub1 = xmld.CreateElement("people");
            xmlsub1.SetAttribute("id", TempId);  
        
    这是我项目里德
      
    xmlsub1.SetAttribute("id", TempId);
    这个是添加xmlsub1.RemoveAllAttributes("id", TempId);
    我想象这样就可以
    你试试
    不好用的话
    xmlsub1.点下面有好几个remove什么我英文不太好
    你试试肯定有好用的
      

  5.   

    xmlsub1.RemoveAllAttributes("id", TempId); 
    写错了应该是这样
    xmlsub1.RemoveAllAttributes(“id”); 
      

  6.   

    参考一下msdn的例子:
    using System;
    using System.IO;
    using System.Xml;public class Sample
    {
      public static void Main()
      {    XmlDocument doc = new XmlDocument();
        doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" +
                    "<title>Pride And Prejudice</title>" +
                    "</book>");    XmlElement root = doc.DocumentElement;    // Remove the genre attribute.
        root.RemoveAttribute("genre");
        
        Console.WriteLine("Display the modified XML...");
        Console.WriteLine(doc.InnerXml);  }
    }
      

  7.   

    LZ我尽力了 
    我试了都不好使
    你要忙了 帮不了你了
    给你个思路你看行不行
    用 //root.ReplaceChild(xml1, xmln);
    用一个节点替换就的节点
    我也是没有办法了
    sorry
      

  8.   

    这个例子本身是可以用的吧,我用我这边的一个xml文件测试了是成功的.但是删除xmlns属性时不成功,不知道是不是xmlns删除不了的.
    我测试删除name属性是成功的,代码和xml如下:
                XmlDocument doc = new XmlDocument();
                doc.Load("d://messager.xml");            XmlElement root = doc.DocumentElement;            root.RemoveAttribute("name");//            root.RemoveAttribute("xmlns");            doc.Save("d://messager.xml");<?xml version="1.0" encoding="utf-8"?>
    <root name="xx" xmlns="http://www.163.com/rss/0.9">
      <Header>头</Header>
      <Items>
        <Item>
          <Value>内容</Value>
        </Item>
        <Item>
          <Value>内容</Value>
        </Item>
      </Items>
      <Footer>脚</Footer>
    </root>
      

  9.   

    能不能在创建的时候就不加上xmlns呢?
    看看这篇文章:http://blog.csdn.net/honkerhero/archive/2007/07/02/1675824.aspx
      

  10.   

    当XML被 LODA到 内存中,是不能移除名空间xmlns的。所以上面的是去不掉xmlns的。你可以通过替换里面的元素来实现了。能不能在创建的时候就不加上xmlns呢? 
    ------------------------------------
    当然可以。
      

  11.   

    对阿,删除别的名称就可以,就是xmlns这个名称删除不了,但可以修改内容,而我要的是连xmlns都要删除,有没有什么好的办法
      

  12.   

    LZ 我刚才和我们项目组的牛人聊天
    他说Xlm标准中有泪是关键字的东西是删不掉
    我猜你的xmlns就是
    那个相当于关键字
    是删不掉的
    你换个名不行吗?
      

  13.   

    把这个语句load到Document中,里面获取xml的字符串(doc.asXML()),然后强制把xmlns去掉,然后在加载再保存
    不过这样比较麻烦
    最好的办法就是在你加载的时候就不要创建xmlns这个属性
      

  14.   

    替换是一个办法,不过这样就要写代码了,如果每个XML文件的命名空间xmlns="......"都不一样,那么不是要写很多句替换代码而且替换还有很多不好的地方。补充一个xml文件是别人建好的,我要做的是获取这个XML某些数据并按照固定的格式导入数据库,所以就写了个xslt把这个xml转换成另外一个xml,可是命名空间xmlns="......"使转换失败,如果把命名空间手动去掉再转换就成功了,有没有人知道在有命名空间下怎么去转换XML文件
      

  15.   

    这位美女给了我灵感,既然当XML被 LODA到 内存中,是不能移除名空间xmlns,那么我先把xmlns的内容清空保存XML文件后再次Load到内存中xmlns就不见了(自动隐藏),接着就可以用我自己写的XSLT来转换成需要的XML格式再保存,经试验是成功,把两个9M的Xml文件经过转换到入库效率还蛮高(4、5秒左右),呵呵,这部分工作终于可以完成了,谢谢各位的回答
      

  16.   

    我也碰到这个问题,我是先用string.Replace将XML字符串中的xmlns替换成其他的名称(比如snlmx),然后用ReplaceAttributes删除这个属性(snlmx),比较简单,哈哈
      

  17.   

    怎么样才能将 xmlns的内容清空
      

  18.   

    可使用以下代码:
    //Create our own namespaces for the output
    XmlSerializerNamespaces ns = new XmlSerializerNamespaces ();//Add an empty namespace and empty value
    ns.Add ("", "");//Create the serializer
    XmlSerializer slz = new XmlSerializer (someType);//Serialize the object with our own namespaces (notice the overload)
    slz.Serialize (myXmlTextWriter, someObject, ns);
     
    此外,在评论中还提到了去除开头的<?xml version="1.0" encoding="utf-8"?>的方法:
    XmlWriterSettings settings = new XmlWriterSettings ();
    settings.OmitXmlDeclaration = true; // Remove the <?xml version="1.0" encoding="utf-8"?>XmlWriter writer = XmlWriter.Create ("output_file_name.xml", settings);