0

我有一个 XSD,我想用它来将我的域对象序列化为 XML。我正在使用 StreamingMarkupBuilder 生成 XML,但我希望能够从 XSD 中提取命名空间以用于构建 XML。我见过的大多数示例要么不使用 XSD,从 XSD 创建 JAXB 类,要么只使用 XSD 进行验证。我认为有一种 Groovy 方法来处理 XSD 以提取名称空间信息以创建 XML,但我还没有找到它。有任何想法吗?

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

1 回答 1

0

我猜您正在使用XmlParser从您的 XSD 获取信息。要获取命名空间,您无需验证即可实例化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 回答