我想从XSD(Structure XSD)创建一个Golang结构。
我已经阅读了从XSD生成Go结构的帖子,建议使用go-xsd,但是我已经下载了go-xsd并安装了xsd-makepkg,但我无法生成我的结构。
我在做什么?
xsd-makepkg -basepath="/Users/XSD_Access/" -goinst=false
-xsd-makepkg:它是从 go-xsd-pkg
创建的二进制文件 -basepath:包含我要转换为结构的结构 XSD 的路由。 -goinst :我没有安装 go-buildrun,我认为这不是必需的,因为这个原因是错误的
命令的结果是什么?
一个文件夹 ($GOPATH/usr/Users/XSD_Access/),其中包含所有追随者 XML 包装器的其他文件夹
- docbook.org
- docs.oasis-open.org
- kbcafe.com
- khronos.org
- schemas.opengis.net
- thearchitect.co.uk
- 用户
- 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 创建结构?
提前致谢
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
我找到了这个命令行选项:
-local=true :本地副本 -- 仅当文件在本地不存在时才下载
下面的语句适用于 xsd 架构文件夹中的 mydomain.xsd。
xsd-makepkg -local=true -uri="mydomain.xsd" -basepath="github.com/my_name/xsd-schema"
参考: https://github.com/metaleap/go-xsd#command-line-flags-for-go-xsdxsd-makepkg-tool