0

ドメイン オブジェクトを XML にシリアライズする際に使用したい XSD があります。StreamingMarkupBuilder を使用して XML を生成していますが、XSD から名前空間を抽出して XML の構築に使用できるようにしたいと考えています。私が見たほとんどの例では、XSD を使用していないか、XSD から JAXB クラスを作成しているか、または検証のために XSD のみを使用しています。XML を作成するための名前空間情報を抽出するために XSD を処理する Groovy の方法があると思いますが、見つけられませんでした。何か案は?

def xmlBuilder = new StreamingMarkupBuilder()
def xmlString = xmlBuilder.bind {
  mkp.declareNamespace(ns: extractedFromXSD)
  ...
4

1 に答える 1

0

XmlParserXSDから情報を取得するために使用していると思います。XmlParser 名前空間を取得するには、検証なしで namespace-awareness :をインスタンス化しますnew XmlParser(false, false)

私は、w3schools から取り除かれたxsd の例を使用しました。

xml = '''<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="shiporder">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="orderperson" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="orderid" type="xs:string" use="required"/>
        </xs:complexType>
    </xs:element>
</xs:schema>'''

xsd = new XmlParser(false, false).parseText xml

assert xsd.'@xmlns:xs' == 'http://www.w3.org/2001/XMLSchema'
于 2013-04-14T13:33:36.777 に答える