<?xml version="1.0" encoding="utf-8"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <TestText>&IncludeDirs;</TestText>
</Test>关键是&IncludeDirs;

解决方案 »

  1.   

    &符号是不允许在xml中出现的,你需要先把文档中的&替换为正常字符,然后再去解析xml
      

  2.   

    是先有Xml,然后根据Xml写一个类所以Xml是不可以变的
      

  3.   

    Xml里&都是以&amp;这个形式存在的 
    http://support.microsoft.com/kb/316063
      

  4.   

    谁写的“xml”呢?扁他!连xml中什么东西需要转义都不知道。
      

  5.   

    前提就是错误的,这根本不是xml。
      

  6.   

    &和;中间的东西会被转义吧比如&amp;会被转义为&
    &lt;会被转义为<那&IncludeDir;会被转移成什么?或者如何禁用这个转义?那个XML之前是用perl和C++读的,都没问题,但是用C#读就有问题了
      

  7.   

    加DTD<?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE Test [
      <!ELEMENT TestText (#PCDATA)>
      <!ENTITY IncludeDirs "abcde">
    ]>
    <Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <TestText>&IncludeDirs;</TestText>
    </Test>C#解析
                var stream = Assembly.GetEntryAssembly().GetManifestResourceStream("Test.file.xml");
                var xr = XmlReader.Create(stream, new XmlReaderSettings() { ProhibitDtd=false });
                xr.ReadToFollowing("TestText");
                Console.WriteLine(xr.ReadElementString());程序输出
    abcde
    &IncludeDirs;被转意成abcde
      

  8.   

    很遗憾 C# 对xml格式的要求显然比 c++ 或者 perl 要求的更严格。如果要根治,我觉得得从序列化xml这块入手,含有&的地方应该加上 <![CDATA[ ... ]]>
    <TestText><![CDATA[&IncludeDirs;]]></TestText>如果要治个标,可以参考这篇文章:
    http://stackoverflow.com/questions/121511/reading-xml-with-an-into-c-xmldocument-object先用Regex将 & 替换成 &amp;
      

  9.   


    跟语言或者平台没有关系,这是xml规范(例如参考http://www.w3.org/TR/1998/REC-xml-19980210)所规定的,不遵守这个规范的所谓“没问题”才是出了邪门了呢。
      

  10.   

    我觉得这是我想要的,其实原来的XML里面是有ENTITY的,不过我不知道&XXX;是由ENTITY设定的。周一上班再说Thanks all
      

  11.   

    XML都是自己弄`自己解析` 弄了个RSS新闻阅读器也没有看到这样的玩意儿`