我有一个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)
...
答案 0 :(得分:0)
我猜你正在使用XmlParser
从你的XSD获取信息。要获取命名空间,请实例化XmlParser
without validation neither namespace-awareness:new XmlParser(false, false)
。
我在w3schools中使用了剥离的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'