string p="房款|应收";
PrintXml.WriteAttributeString(p, Row[Column].ToString());
报错
“房款|应收”中的名称字符无效。名称中不能包含“|”字符(十六进制值 0x7C)。这里我必须采用|这个符号。似乎XML也支持但为什么这个地方就是穿不进去不管怎么样只要能穿进去就可以
辅助代码 StringBuilder PrintStr = new StringBuilder();
            System.Xml.XmlWriterSettings setting = new XmlWriterSettings();
            setting.Indent = true;
            setting.OmitXmlDeclaration = true;            using (XmlWriter PrintXml = XmlWriter.Create(PrintStr, setting))
            {

解决方案 »

  1.   

    先单步断点调试一下看看生成的XML文档是声明,|又不是xml的特殊字符,应该没问题的。
      

  2.   

                XmlDocument xml = new XmlDocument();
                XmlDeclaration declar = xml.CreateXmlDeclaration("1.0", "utf-8", "");
                xml.AppendChild(declar);
                XmlElement element = xml.CreateElement("root");
                element.InnerText = "房款|应收";
                xml.AppendChild(element);
                xml.Save(@"E:\1.xml");
      

  3.   


    你这个肯定没问题了我说的这个string p="房款|应收";
    PrintXml.WriteAttributeString(p, Row[Column].ToString());
      

  4.   

    http://msdn.microsoft.com/zh-cn/library/aa559931(v=BTS.10).aspx不允许把这种符号当属性名或节点名吧,你可以转换成别的替换
      

  5.   

     StringBuilder output = new StringBuilder();
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Indent = true;
                using (XmlWriter writer = XmlWriter.Create(output, settings))
                {
                    // Write the root element.
                    writer.WriteStartElement("order");                // Write an element with attributes.
                    writer.WriteStartElement("item");
                    writer.WriteAttributeString("date", "2/19/01");
                    writer.WriteAttributeString("orderID", "房款|应收");                // Write a full end element. Because this element has no
                    // content, calling WriteEndElement would have written a
                    // short end tag '/>'.
                    writer.WriteFullEndElement();                writer.WriteEndElement();                // Write the XML to file and close the writer
                }
                textBox1.Text = output.ToString();
    string p="房款|应收";
    PrintXml.WriteAttributeString(p, Row[Column].ToString());
    建议写成PrintXml.WriteAttributeString(Row[Column].ToString(),p);
      

  6.   

    "这里我必须采用|这个符号。似乎XML也支持但为什么这个地方就是穿不进去"专门去查了W3C的定义:

    XML 命名规则
    XML 元素必须遵循以下命名规则:•名称可以含字母、数字以及其他的字符
    •名称不能以数字或者标点符号开始 
    •名称不能以字符 “xml”(或者 XML、Xml)开始 
    •名称不能包含空格 
    可使用任何名称,没有保留的字词。最佳命名习惯
    使名称具有描述性。使用下划线的名称也很不错。名称应当比较简短,比如:<book_title>,而不是:<the_title_of_the_book>。避免 "-" 字符。如果您按照这样的方式进行命名:"first-name",[color=#3366FF]一些软件会认为你需要提取第一个单词。

    避免 "." 字符。如果您按照这样的方式进行命名:"first.name",一些软件会认为 "name" 是对象 "first" 的属性。避免 ":" 字符。冒号会被转换为命名空间来使用(稍后介绍)。XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验,即使用数据库的名称规则来命名 XML 文档中的元素。非英语的字母比如 éòá 也是合法的 XML 元素名,不过需要留意当软件开发商不支持这些字符时可能出现的问题。[/color]应该是你的命名被c#的解析器理解成关键字了,不管你怎么样弄,只要你用xml的类来生成,始终会报xml错误的,连浏览器打开里都报错,非要这样弄就用stringBuilder自己组装字符串吧,真的不推荐啊
      

  7.   

    这里我必须采用|这个符号。似乎XML也支持但为什么这个地方就是穿不进去LZ是在什么资料里面看见能插入的,发出来看看你为什么不用一个自己业务能识别的可插入符号来替代这个符号呢,到时候取出来的时候,split一下就好了