2011-06-30 10 views
1

私は既存のコードを使って作業していて、を再コンパイルせずにデータを変更したいと思っています(これはスーパーユーザの問題と思われます)DataSet Merge without Schemaはデータを上書きしません。

私たちは現在、(コンパイル済みの)リソースベースのXMLファイルからDataSet.ReadXmlです。次に、ローカルのXMLファイルがあるかどうかをチェックし、存在する場合はDataSet.ReadXmlファイルを探し、次にDataSet.Mergeの結果を元に戻します。

コンパイルされたリソースベースのXMLにスキーマがないので、外部XMLがデータを上書きする方法はありません。

答えて

0

私の質問のタイトルは、このオプションを排除するように見えたしているかもしれないが、それは意図していなかった。

あなた最初のサブとしてxs:schemaを含むことによって、コンパイル済みのファイルを上書きするために、ローカルファイルのデータを取得することができますXMLの要素です。

I.e.元のデータにスキーマがない場合、マージされたスキーマが使用されます。

など。

オリジナル:

<NewDataSet> 
    <dt1> 
    <k>1</k> 
    <l>test</l> 
    <m>1</m> 
    </dt1> 
    <dt1> 
    <k>2</k> 
    <l>test</l> 
    <m>2</m> 
    </dt1> 
    <dt1> 
    <k>2</k> 
    <l>tst</l> 
    <m>3</m> 
    </dt1> 
</NewDataSet> 

新:

<NewDataSet> 
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
    <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
     <xs:element name="dt1"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="k" type="xs:string" /> 
       <xs:element name="l" type="xs:string" /> 
       <xs:element name="m" type="xs:string" minOccurs="0" /> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:choice> 
    </xs:complexType> 
    <xs:unique name="Constraint1" msdata:PrimaryKey="true"> 
     <xs:selector xpath=".//dt1" /> 
     <xs:field xpath="k" /> 
     <xs:field xpath="l" /> 
    </xs:unique> 
    </xs:element> 
</xs:schema> 
    <dt1> 
    <k>1</k> 
    <l>test</l> 
    <m>1</m> 
    </dt1> 
    <dt1> 
    <k>2</k> 
    <l>test</l> 
    <m>3</m> 
    </dt1> 
    <dt1> 
    <k>3</k> 
    <l>test</l> 
    <m>4</m> 
    </dt1> 
</NewDataSet> 

は(簡単にするために、私はでWriteXml出力を含む)に合併:

<NewDataSet> 
    <dt1> 
    <k>1</k> 
    <l>test</l> 
    <m>1</m> 
    </dt1> 
    <dt1> 
    <k>2</k> 
    <l>test</l> 
    <m>3</m> 
    </dt1> 
    <dt1> 
    <k>2</k> 
    <l>tst</l> 
    <m>3</m> 
    </dt1> 
    <dt1> 
    <k>3</k> 
    <l>test</l> 
    <m>4</m> 
    </dt1> 
</NewDataSet> 
関連する問題