另外100分在这里:http://topic.csdn.net/u/20120303/07/1c95d500-ae86-415b-86d4-bef16798cc68.html?seed=554235051&r=77762702#r_77762702
<?xml version="1.0" encoding="UTF-8"?>
<my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
    <my:name></my:name>
    <my:description></my:description>
</my:myFields>
我可以把它读取出来了,现在就是想把值入到my:name和my:description里面(InnerText)
while (txtReader.Read())
{
   //请教代码:
}最后想要的结果是:<?xml version="1.0" encoding="UTF-8"?>
<my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
    <my:name>this is name</my:name>
    <my:description>this is description</my:description>
</my:myFields>最后把这个XML保存在byte[]里面。

解决方案 »

  1.   

    1. 用 XmlDocument 或者 XDocument(linq2xml) 插入节点,注意有namespace
    2. xml -> string 再通过 System.Text.Encoding.UTF8.GetBytes(string) 获得 byte[]
      

  2.   

    转换成byte的问题也解决了!非常感谢。目前只剩下一个问题了,就是如何把xml读取,插入值,并保存到XmlDocument里面。
      

  3.   

    http://www.xueit.com/cshare/show-4275-1.aspx
    参考函数
     private void UpdateNodes(XmlNodeList root, Hashtable htAtt, Hashtable htSubNode);
      

  4.   

    能否给出完整代码呢?while (txtReader.Read())
    {
       //请教代码:把xml读取,插入值,并保存到XmlDocument里面
    }
      

  5.   

    你的xml缺少对my这个ns的定义,xmldocument load的时候会产生错误的吧
    不知道是你漏了还是怎么回事
    不行就直接用正则替换掉就是了
      

  6.   

    这个定义的确是漏掉了,不过我要替换(插入)的只是这里面的值:
        <my:name>this is name</my:name>
        <my:description>this is description</my:description其他部分直接copy就好了。
      

  7.   

    大概是这样:<my:myFields xmlns:my="...." xmlns:pc="...." >,不过没关系,这部分直接copy即可。
      

  8.   

    修改后的xml如下,增加了my的指向:<?xml version="1.0" encoding="UTF-8"?>
    <my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://whatever.com/">
      <my:name></my:name>
      <my:description></my:description>
    </my:myFields>
    解析代码如下:// load xml from url
    string url = "http://127.0.0.1/test.xml";
    var request = WebRequest.Create(url);
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.Load(request.GetResponse().GetResponseStream());// parse via xdocument and xpath
    XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmldoc.NameTable);
    nsmgr.AddNamespace("my", "http://whatever.com/");
    xmldoc.SelectSingleNode("/my:myFields/my:name", nsmgr).InnerText = "your-name";
    xmldoc.SelectSingleNode("/my:myFields/my:description", nsmgr).InnerText = "your-description";
    Console.WriteLine(xmldoc.InnerXml);

    // to bytes
    byte[] result = Encoding.UTF8.GetBytes(xmldoc.InnerXml);
      

  9.   

    谢谢,不知道为啥,我用XmlTextReader就可以把XML读下来,XmlDocument读取XML有问题。
    请问有没有办法用XmlTextReader读取,然后用XmlDocument写呢?while (txtReader.Read())
    {
    //请教代码:把xml读取,插入值,并保存到XmlDocument里面
    }
      

  10.   

    啊,XmlDocument可以load(reader)!给分!