我用C++得程序调C#写的soap服务,有时会出错,可是我看xml没什么问题啊,拜托哪位大人帮我一下!C++:hr=Reader.CreateInstance(__uuidof(SoapReader30));
     这句出错错误描述:Soap error: XML Parser failed at linenumber 1, lineposition 467, reason is: Illegal xml character.传递得xml文件:
  <?xml version="1.0" encoding="utf-8" ?> 
- <TopicPage xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
  <m_strBBSName>论坛</m_strBBSName> 
  <m_nCurrentPage>1</m_nCurrentPage> 
  <m_nTotalPages>1</m_nTotalPages> 
- <m_Topics>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>3606</m_nTopicID> 
  <m_strTitle>同事的女儿</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>3621</m_nTopicID> 
  <m_strTitle>HOHO~~~~偶也来几张撒`都是拿自己6600照的哦!</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>4168</m_nTopicID> 
  <m_strTitle>*¨︱冬天の故事. 〣淘*tao°〣__{新人报道哇……</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>3782</m_nTopicID> 
  <m_strTitle>同事的女儿之二</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>3804</m_nTopicID> 
  <m_strTitle>火辣劲爆的地下车模</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>3674</m_nTopicID> 
  <m_strTitle>[分享]使用Nokia 7610拍照~</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>3594</m_nTopicID> 
  <m_strTitle>手机偷拍数学系漂亮MM</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>4315</m_nTopicID> 
  <m_strTitle>重庆建院男生5栋309寝室全体员工</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>3605</m_nTopicID> 
  <m_strTitle>哈哈。试贴几张。支持新版块。</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>3596</m_nTopicID> 
  <m_strTitle>看看N830的百万象素1CCD的手机拍摄的漂亮模特。</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>3675</m_nTopicID> 
  <m_strTitle>我的一个朋友用自己的7610拍的!</m_strTitle> 
  </Topic>
- <Topic>
  <m_nBoardID>49</m_nBoardID> 
  <m_nTopicID>3663</m_nTopicID> 
  <m_strTitle>十二星座</m_strTitle> 
  </Topic>
  </m_Topics>
  </TopicPage>拜托了!

解决方案 »

  1.   

    <?xml version="1.0" encoding="utf-8" ?>这个必须和你的实际文件格式一样
    如果你是gb,则为<?xml version="1.0" encoding="gb2312" ?>
    如果是Unicode(默认),则为<?xml version="1.0"?>
      

  2.   

    goodboyws(深夜不眠者)大人能更详细点吗?不太懂……
      

  3.   

    还要怎么详细啊,把<?xml version="1.0" encoding="utf-8" ?>改成<?xml version="1.0" encoding="gb2312" ?>试试
      

  4.   

    <?xml version="1.0" encoding="utf-8" ?>改成<?xml version="1.0"?>
      

  5.   

    <m_strTitle>*¨︱冬天の故事. 〣淘*tao°〣__{新人报道哇……</m_strTitle> xml里出现特殊字符如&是不可以的 要预先定义在IE 浏览器,以及一些解析用的DOM中解析这个片段,就会产生错误。在W3C的技术规范中,也可以看到这样的字符不允许出现:
    http://www.w3.org/TR/2001/REC-xml-c14n-20010315比如:对 Text Nodes 允许的字符有如下要求: the string value, except all ampersands are replaced by &amp;, all open angle brackets (< ) are replaced by &lt;, all closing angle brackets (> ) are replaced by &gt;, and all #xD characters are replaced by &#xD;. 由于这些特殊字符比较多,我们在XML中替换的工作量比较大,我们可以在DTD文件中作些定义:比如DTD文件中增加以下部分:<!-- PERCENT SIGN -->
    <!ENTITY amp "&#38;#38;">
    <!-- COPYRIGHT SIGN -->
    <!ENTITY reg "&#x00AE;">
    <!-- REG TRADE MARK SIGN -->
    <!ENTITY trade "&#x2122;">并在XML中定义这个XML文件需要这个DTD支持:<!DOCTYPE HeadCount SYSTEM "eula.dtd">这样在XML文件中出现 & &reg; &#8482; 这类特殊字符就不会再报错了。有关更多的特殊字符可以参看:http://xml.coverpages.org/CourtDocument11-2002-05s-DTD.txt那里罗列的特殊字符有近200个。