从XSD创建一个Golang结构体

9
我想从XSD(结构XSD)创建一个Golang结构体。
我已经阅读了generate Go structs from XSD的帖子,建议使用go-xsd,但是我已经下载了go-xsd并安装了xsd-makepkg,但无法生成我的结构体。
我在做什么?
xsd-makepkg -basepath="/Users/XSD_Access/" -goinst=false -xsd-makepkg:它是从go-xsd-pkg中创建的二进制文件
-basepath:包含我要转换为结构体的结构XSD的路线。 -goinst:我没有安装go-buildrun,我认为这不是必要的,因此设置为false。
命令的结果是什么?
一个文件夹($GOPATH/usr/Users/XSD_Access/),其中包含所有跟随者XML包装器的其他文件夹。
  • docbook.org
  • docs.oasis-open.org
  • kbcafe.com
  • khronos.org
  • schemas.opengis.net
  • thearchitect.co.uk
  • Users
  • www.w3.org

结构 XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
   <xs:element name="Request" type="Request"/>
   <xs:complexType name="Request">
      <xs:annotation>
         <xs:documentation xml:lang="sp"><![CDATA[
        Comment xxxxx
     ]]></xs:documentation>
  </xs:annotation>
  <xs:sequence>
     <xs:element name="idOne" type="xs:string" minOccurs="0" maxOccurs="1">
      <xs:annotation>
     <xs:documentation xml:lang="sp"><![CDATA[Comment xxxxx
     ]]></xs:documentation>
      </xs:annotation>
    </xs:element>
         <xs:element name="idTwo" type="xs:string" minOccurs="0" maxOccurs="1">
  <xs:annotation>
     <xs:documentation xml:lang="sp"><![CDATA[Comment xxxxxx
     ]]></xs:documentation>
  </xs:annotation>
</xs:element>
  </xs:sequence>
   </xs:complexType>
</xs:schema>

有人能告诉我我做错了什么或者错过了哪一步,导致我无法从我的结构XSD创建一个结构体吗?

提前感谢。

2个回答

5

5

xsd-makepkg期望从某种网络服务器下载xsd文件。

一开始我也对此感到困惑,因为文档提到可以使用本地文件进行构建,但这只适用于已经下载的文件。

-basepath="" 确定了这些文件将被下载到哪里,以及生成的.go文件将被放置在哪里。

你需要的是-uri=""参数。-uri=""决定要下载和处理哪些文件。该参数接受一个以空格分隔的URI列表,http://是可选的。

一个快速而不太干净的方法是从本地Apache实例服务该文件,然后将程序指向localhost。当然,这假设您已经运行了Web服务器。

例如:

mv *.xsd /var/www/html
cd /var/www/html
for xsd in *; do xsd-makepkg -uri="127.0.0.1/$xsd"; done

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接