1

この問題について具体的に説明する複数のトピックと解決策について説明しました。何も機能していないか、自分が間違っていることを理解できません。

結果のxml出力ファイルの要素名に名前空間プレフィックスを付けたいと思います。

VSコマンドプロンプトからVisual Studio 2008でXSDコマンドを使用しています

Trial.xsdの xsd スキーマは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Junk"
       targetNamespace="http://www.opengis.net/kml/2.2"
       xmlns="http://www.opengis.net/kml/2.2"
       xmlns:gx="http://www.google.com/kml/ext/2.2"
       xmlns:kml="http://www.opengis.net/kml/2.2"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       elementFormDefault="qualified">

<xs:import namespace="http://www.google.com/kml/ext/2.2" schemaLocation="TestSchema.xsd" />

<!-- Start LookType -->
<xs:complexType name="LookType">
  <xs:sequence>
    <xs:element ref="gx:TimeSpan" minOccurs="0" />
    <xs:element name="longitude" type="xs:string" />
  </xs:sequence>
</xs:complexType>
<!-- End LookType -->

<xs:element name="Te" type="LookType" />

</xs:schema>

TestSchema.xsdの xsd スキーマは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="TestSchema"
targetNamespace="http://www.google.com/kml/ext/2.2"
       xmlns="http://www.google.com/kml/ext/2.2"
       xmlns:gx="http://www.google.com/kml/ext/2.2"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       elementFormDefault="qualified">

<xs:element name="TimeSpan" type="gx:GXTimeSpanType" />

<!-- Start GXTimeSpanType -->
<xs:complexType name="GXTimeSpanType">
  <xs:sequence>
    <xs:element name="begin" type="xs:string" />
    <xs:element name="end" type="xs:string" />
  </xs:sequence>
</xs:complexType>
<!-- End GXTimeSpanType -->

</xs:schema>

Trial.csを使用して結果のクラスファイルを生成していますxsd TestSchema.xsd ./Trial.xsd /c /l:cs /n:T

プログラムでは、これらのジャンク値を割り当て、を使用してファイルに書き込みXmlDocumentますXmlSerializerFileStream

T.LookType te = new T.LookType();
te.longitude = "34.444";
te.TimeSpan = new T.GXTimeSpanType();
te.TimeSpan.begin = "2010-02-26T20:22:00Z";
te.TimeSpan.end = "2010-02-26T20:23:42Z";

XmlDocumentを使用しXmlSerializerてファイルを保存する方法は除外しましFileStreamたが、少し厚いので、それが問題の一部でない限り投稿したいと思います。

これは、結果のファイルで得られるものです

<?xml version="1.0" encoding="utf-16"?>
<Te xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.opengis.net/kml/2.2">

  <TimeSpan xmlns="http://www.google.com/kml/ext/2.2">
    <begin>2010-02-26T20:22:00Z</begin>
    <end>2010-02-26T20:23:42Z</end>
  </TimeSpan>
  <longitude>34.444</longitude>
</Te>

これが、結果のファイルに必要なものです。gx:TimeSpan要素とxmlns:gx名前空間の定義がメインTe要素に追加されていることに注意してください。

<?xml version="1.0" encoding="utf-16"?>
<Te xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.opengis.net/kml/2.2"
xmlns:gx="http://www.google.com/kml/ext/2.2">
  <gx:TimeSpan>
    <begin>2010-02-26T20:22:00Z</begin>
    <end>2010-02-26T20:23:42Z</end>
  </gx:TimeSpan>
  <longitude>34.444</longitude>
</Te>
4

1 に答える 1