2013-04-12 4 views
0

도메인 객체를 XML로 직렬화 할 때 사용하려는 XSD가 있습니다. XML을 생성하기 위해 StreamingMarkupBuilder를 사용하고 있지만 XSD에서 네임 스페이스를 추출하여 XML을 작성하는 데 사용할 수 있기를 원합니다. 내가 본 대부분의 예제 중 하나는 XSD를 사용하지 않고, XSD에서 JAXB 클래스를 생성하거나, 유효성 검사를 위해서만 XSD를 사용합니다. XSD를 처리하여 XML을 생성하기위한 네임 스페이스 정보를 추출하는 그루비 (Groovy) 방법이 있다고 추측합니다.하지만 찾지 못했습니다. 어떤 아이디어?XSD에서 네임 스페이스를 추출하는 방법은 무엇입니까?

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

당신은 당신의 XSD를 게시 할 수 있습니까? – Will

답변

0

난 당신이 XSD에서 정보를 얻을 수 XmlParser을 사용하는 것 같은데요. 네임 스페이스를 가져 오려면 XmlParserwithout validation neither namespace-awareness : new XmlParser(false, false)을 인스턴스화합니다.

은 내가 W3 스쿨에서 xsd example을 제거 사용 :

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' 
관련 문제