2010-05-25 1 views
0

아래 xml에서 xsd 파일을 자동으로 생성하고 xsd2code를 사용하여 C# 클래스를 가져 왔습니다. 문제는 전체 XML이 비 직렬화되지 않는다는 것입니다. 여기xml 파일의 비 직렬화 문제.

내가 역 직렬화하려고 해요 방법이다 : 나는 위 실행하면

<?xml version='1.0' encoding='UTF-8'?> 
<project> 
    <scm class="hudson.scm.SubversionSCM"> 
    <locations> 
     <hudson.scm.SubversionSCM_-ModuleLocation> 
     <remote>https://svn.xxx.com/test/Validation/CPS DRTest DLL/trunk</remote> 
     </hudson.scm.SubversionSCM_-ModuleLocation> 
    </locations> 
    <useUpdate>false</useUpdate> 
    <browser class="hudson.scm.browsers.FishEyeSVN"> 
     <url>http://fisheye.xxxx.net/browse/Test/</url> 
     <rootModule>Test</rootModule> 
    </browser> 
    <excludedCommitMessages></excludedCommitMessages> 
    </scm> 
    <openf>Hello there</openf> 
    <buildWrappers/> 
</project> 

는 위치 노드가 null 남아 : 여기

static void Main(string[] args) 
    { 
     using (TextReader textReader = new StreamReader("config.xml")) 
     { 
      // string temp = textReader.ReadToEnd(); 
      XmlSerializer deserializer = new XmlSerializer(typeof(project)); 
      project p = (project)deserializer.Deserialize(textReader); 
     } 
    } 

실제 XML이다. 여기

은 내가 사용하고있어 XSD입니다 : '.'

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="project"> 
    <xs:complexType> 
     <xs:all> 
     <xs:element name="openf" type="xs:string" minOccurs="0" /> 
     <xs:element name="buildWrappers" type="xs:string" minOccurs="0" /> 
     <xs:element name="scm" minOccurs="0"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="useUpdate" type="xs:string" minOccurs="0" msdata:Ordinal="1" /> 
       <xs:element name="excludedCommitMessages" type="xs:string" minOccurs="0" msdata:Ordinal="2" /> 
       <xs:element name="locations" minOccurs="0"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="hudson.scm.SubversionSCM_-ModuleLocation" minOccurs="0"> 
         <xs:complexType> 
         <xs:sequence> 
          <xs:element name="remote" type="xs:string" minOccurs="0" /> 
         </xs:sequence> 
         </xs:complexType> 
        </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
       <xs:element name="browser" minOccurs="0"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="url" type="xs:string" minOccurs="0" msdata:Ordinal="0" /> 
        <xs:element name="rootModule" type="xs:string" minOccurs="0" msdata:Ordinal="1" /> 
        </xs:sequence> 
        <xs:attribute name="class" type="xs:string" /> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      <xs:attribute name="class" type="xs:string" /> 
      </xs:complexType> 
     </xs:element> 
     </xs:all> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
    <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element ref="project" /> 
     </xs:choice> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

답변

1

알아 냈어. xsd2code를 사용할 때 3.5 프레임 워크를 대상으로하고 XML 특성을 포함하는 옵션을 선택했습니다. 이제 예상대로 비 직렬화됩니다. 어느 쪽이 그랬는지는 모르지만 지금은 작동합니다.

0

this page에 따르면 올바른 XML 태그 이름 문자가 아니므로 <hudson.scm.SubversionSCM_-ModuleLocation>의 이름을 점없이 바꿔야합니다.

+1

문제가 아니어야합니다. 점들은 XML 이름 내에서 괜찮습니다. 그것들은 XML 1.0 및 XML 1.1 권장 사항 모두에서 제작에 포함됩니다 [4a]. 할 수없는 일은 점을 사용하여 이름을 시작하는 것입니다. –