3

ジロー「SearchResults.xsd」でVisualStudioのXSD.EXEユーティリティを実行して、c#またはvb.netクラスを生成しようとしましたが、うまくいかず、助けを求めています。エラーが発生し続けます(以下を参照)。これが私がhttp://www.zillow.com/howto/api/GetDeepSearchResults.htmからダウンロードした元のファイルです:

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

<xsd:schema attributeFormDefault="unqualified"
    elementFormDefault="unqualified"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.zillow.com/static/xsd/SearchResults.xsd"     
    xmlns:ZillowTypes="http://www.zillow.com/static/xsd/ZillowTypes.xsd">

    <xsd:import namespace="http://www.zillow.com/static/xsd/ZillowTypes.xsd"
    schemaLocation="/vstatic/4/static/xsd/ZillowTypes.xsd"  />

    <xsd:element name="searchresults">
        <xsd:complexType>
            <xsd:sequence>

                <xsd:element name="request">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="address" type="xsd:string" />
                            <xsd:element name="citystatezip" type="xsd:string" />
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>

                <xsd:element name="message" type="ZillowTypes:Message" />

                <xsd:element minOccurs="0" name="response">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="results">
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element minOccurs="1" maxOccurs="unbounded" name="result" type="ZillowTypes:SimpleProperty" />
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>

            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

</xsd:schema>

VisualStudio2010からXSD.EXEを試したときに発生し続けるエラーは次のとおりです。

C:\Users\username\Documents>xsd /classes SearchResults.xsd
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Schema validation warning: Type 'http://www.zillow.com/static/xsd/ZillowTypes.xsd:Message' is not declared. Line 25, position 6.
Schema validation warning: Type 'http://www.zillow.com/static/xsd/ZillowTypes.xsd:SimpleProperty' is not declared. Line 33, position 12.

Warning: Schema could not be validated. Class generation may fail or may produce
 incorrect results.

Error: Error generating classes for schema 'SearchResults'.
  - The datatype 'http://www.zillow.com/static/xsd/ZillowTypes.xsd:Message' is missing.

すべてがZillowTypes.xsdで定義されているように見えるので、困惑しています。

4

1 に答える 1

5

セットアップにはいくつかの問題があります。XSDファイルの場所から開始します。これはhttp://www.zillow.com/static/xsd/SearchResults.xsdにあるはずです。

上記のXSDは、http:/vstatic/4/static/xsd/ZillowTypes.xsd //www.zillow.com/vstatic/4/static/xsd/ZillowTypes.xsdに解決される相対URIを持つインポートを使用して別のxsdを参照していますが、このURLは参照解除できません(404)!!

代わりにhttp://www.zillow.com/static/xsd/ZillowTypes.xsdを試してみると、パズルのパート2であるZillowTypes.xsdが見つかりました。

これらのエラーのため、両方のXSDファイルをローカルマシンにダウンロードして修正する必要があります。

最初にSearchResults.xsdとしてダウンロードし、次にZillowTypes.xsdとしてダウンロードします。それらを同じフォルダに入れます。

以下の行を変更して、SearchResults.xsdを編集します。

<xsd:import namespace="http://www.zillow.com/static/xsd/ZillowTypes.xsd" schemaLocation="/vstatic/4/static/xsd/ZillowTypes.xsd" /> 

に:

<xsd:import namespace="http://www.zillow.com/static/xsd/ZillowTypes.xsd" schemaLocation="ZillowTypes.xsd"  />

次に、別の問題が発生します。ZillowTypes.xsdに無効な要素宣言が含まれています!したがって、以下のdeclを編集します。

<xsd:complexType name="investmentBuyingBlock">
    <xsd:sequence>
        <xsd:element name="buying" minOccurs="0" maxOccurs="unbounded">
            <xsd:sequence>
                <xsd:element name="year" type="xsd:integer"/>
                <xsd:element name="rentalIncome" type="xsd:integer"/>
                <xsd:element name="otherIncome" type="xsd:integer"/>
                <xsd:element name="mortgagePayment" type="xsd:integer"/>
                <xsd:element name="principal" type="xsd:integer"/>
                <xsd:element name="interest" type="xsd:integer"/>
                <xsd:element name="hoaFees" type="xsd:integer"/>
                <xsd:element name="propertyTaxes" type="xsd:integer"/>
                <xsd:element name="utilities" type="xsd:integer"/>
                <xsd:element name="renovations" type="xsd:integer"/>
                <xsd:element name="maintainCosts" type="xsd:integer"/>
                <xsd:element name="homeOwnerInsurance" type="xsd:integer"/>
                <xsd:element name="managementFees" type="xsd:integer"/>
                <xsd:element name="advertisingCosts" type="xsd:integer"/>
                <xsd:element name="otherExpenses" type="xsd:integer"/>
                <xsd:element name="totalExpenses" type="xsd:integer"/>
                <xsd:element name="opportunityCostInitial" type="xsd:integer"/>
                <xsd:element name="opportunityCostYearly" type="xsd:integer"/>
                <xsd:element name="depreciationBuilding" type="xsd:integer"/>
                <xsd:element name="depreciationrenovation" type="xsd:integer"/>
                <xsd:element name="totalBenefit" type="xsd:integer"/>
                <xsd:element name="totalProfitLoss" type="xsd:integer"/>
            </xsd:sequence>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>

に:

<xsd:complexType name="investmentBuyingBlock">
    <xsd:sequence>
        <xsd:element name="buying" minOccurs="0" maxOccurs="unbounded">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element name="year" type="xsd:integer"/>
                    <xsd:element name="rentalIncome" type="xsd:integer"/>
                    <xsd:element name="otherIncome" type="xsd:integer"/>
                    <xsd:element name="mortgagePayment" type="xsd:integer"/>
                    <xsd:element name="principal" type="xsd:integer"/>
                    <xsd:element name="interest" type="xsd:integer"/>
                    <xsd:element name="hoaFees" type="xsd:integer"/>
                    <xsd:element name="propertyTaxes" type="xsd:integer"/>
                    <xsd:element name="utilities" type="xsd:integer"/>
                    <xsd:element name="renovations" type="xsd:integer"/>
                    <xsd:element name="maintainCosts" type="xsd:integer"/>
                    <xsd:element name="homeOwnerInsurance" type="xsd:integer"/>
                    <xsd:element name="managementFees" type="xsd:integer"/>
                    <xsd:element name="advertisingCosts" type="xsd:integer"/>
                    <xsd:element name="otherExpenses" type="xsd:integer"/>
                    <xsd:element name="totalExpenses" type="xsd:integer"/>
                    <xsd:element name="opportunityCostInitial" type="xsd:integer"/>
                    <xsd:element name="opportunityCostYearly" type="xsd:integer"/>
                    <xsd:element name="depreciationBuilding" type="xsd:integer"/>
                    <xsd:element name="depreciationrenovation" type="xsd:integer"/>
                    <xsd:element name="totalBenefit" type="xsd:integer"/>
                    <xsd:element name="totalProfitLoss" type="xsd:integer"/>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:sequence>
</xsd:complexType>

置き換えてXSDコマンドラインを再実行します

SearchResults.xml

SearchResults.xsd ZillowTypes.xsd

動作するはずです(少なくともXSDは現在有効です)。

于 2012-11-05T20:49:41.000 に答える