2013-04-12 7 views
0

У меня есть XSD, который я хочу использовать для сериализации объектов моего домена в XML. Я использую StreamingMarkupBuilder для генерации XML, но я хочу иметь возможность извлекать пространства имен из XSD для использования в построении XML. Большинство примеров, которые я видел, либо не используют XSD, не создают классы JAXB из XSD, либо используют только XSD для проверки. Я считаю, что есть способ Groovy обработать XSD для извлечения информации о пространстве имен для создания XML, но я ее не нашел. Есть идеи?Как извлечь пространство имен из XSD?

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

Вы можете оставить XSD? – Will

ответ

0

Я предполагаю, что вы используете XmlParser, чтобы получить информацию от вашего XSD. Чтобы получить пространство имен, вы создаете экземпляр XmlParserwithout validation neither namespace-awareness: new XmlParser(false, false).

Я использовал раздели xsd example из W3Schools:

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'