XSD通常是指以W3C XML Schema格式编写的文档,其中包含特定类型的XML文档的描述。
如何定义一个模式定义,可以选择一个元素或另一个元素的多个元素
我正在尝试为可以有多种格式的类型进行架构定义,但我不太确定如何最好地做到这一点。 我试图为其创建类型的 XML 块将涵盖像这样的条目...
对于我附加了架构的 XML 文档,IntelliSense 无法在 VS2019 中工作
我想如果我将架构附加到 XML 文档,我会获得所有标签和属性名称的 IntelliSense 吗?但这似乎不起作用。我尝试将其添加到我的根标签中: 西西:
处理从 XSD 文件生成的两种不同 Java 类型中相同数据的最佳方法
我几乎一直在寻找解决这个问题的最佳方法。 我的情况是,我有一个提供程序,它为我提供 XSD 文件来生成我将用来调用其 SOAP api 的类型。那些 XSD 文件有时...
我有两种可能的 XML 变体: “ElementB”和“ElementC”都是强制性的。 两个“埃莱姆...
对 SOAP 和 WSDL 来说还是很陌生,但我有几个简单的问题。我在使用的 WSDL 文件中看到如下所示的部分,但名称空间 ns1 未在任何地方定义?元素
我正在尝试调试为什么使用 XSD 验证 XML 没有检测到唯一性约束违规。给定下面的 XML 数据及其后面的 XSD 架构,
学习 XSD 有点新鲜。 如果我有这个 XSD 有效架构,如下所示: ...
我在尝试将 XSD + XJB 文件转换为代码中没有 JAXB 注释的 POJO 时遇到了困难。 项目结构: pom.xml src/main/resources/schema.xsd 文件 schema.xsd 可以找到他...
从 XSD 开始生成 XML 文件(随机或定向)的最佳方法是什么(最好是使用 python、bash 或其他...)? 有没有 python 模块可以做到这一点?另一种解决方案? 那个...
我的问题有两个:当属性丢失时,确定行号以及该属性属于哪个元素。 我通过向 XDocument 添加适当的选项来解决第一部分
这是我的 .xsd 文件中的请求,如下所示。正如您所看到的,一些首字母故意是大写和小写的。 这是我的 .xsd 文件中的请求,如下所示。正如您所看到的,一些首字母故意是大写和小写的。 <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://tempuri.org/" targetNamespace="http://tempuri.org/" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"> <xs:element name="Deneme"> <xs:complexType> <xs:sequence> <xs:element name="count" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="CustomerRequest"> <xs:complexType> <xs:sequence> <xs:element name="CustomerName" type="xs:string" /> <xs:element name="Age" type="xs:int" /> <xs:element name="YearlyIncome" type="xs:long" /> <xs:element name="cibilScore" type="xs:int" /> <xs:element name="employmentMode" type="xs:string" /> <xs:element ref="tns:Deneme"/> </xs:sequence> </xs:complexType> </xs:element> 使用 JAXB 生成类后: CustomerRequest.java @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "customerName", "age", "yearlyIncome", "cibilScore", "employmentMode", "deneme" }) @XmlRootElement(name = "CustomerRequest") public class CustomerRequest { @XmlElement(name = "CustomerName", required = true) protected String customerName; @XmlElement(name = "Age") protected int age; @XmlElement(name = "YearlyIncome") protected long yearlyIncome; protected int cibilScore; @XmlElement(required = true) protected String employmentMode; @XmlElement(name = "Deneme", required = true) protected Deneme deneme; // getter and setters } 如您所见,@XmlElement 与 xsd 文件相同。但是,propOrder 值以小写字母开头。它给我带来了以下问题:当我尝试使用 SoapUI 发送请求时,这种情况问题会阻止请求。 如果我发送这样的请求,它会起作用: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> <soapenv:Header/> <soapenv:Body> <tem:CustomerRequest> <customerName>5</customerName> <age>5</age> <yearlyIncome>5</yearlyIncome> <cibilScore>5</cibilScore> <employmentMode>5</employmentMode> <deneme> <count>55</count> </deneme> </tem:CustomerRequest> </soapenv:Body> </soapenv:Envelope> 但是,下面它无法访问以大写开头的元素。 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"> <soapenv:Header/> <soapenv:Body> <tem:CustomerRequest> <CustomerName>5</CustomerName> <Age>5</Age> <YearlyIncome>5</YearlyIncome> <cibilScore>5</cibilScore> <employmentMode>5</employmentMode> <Deneme> <count>55</count> </Deneme> </tem:CustomerRequest> </soapenv:Body> </soapenv:Envelope> 我认为问题出在 SOAP UI,但可能有不同的原因,所以我想问你。 获取某人的企业 Instagram 用户名可能并不总是一件容易的事。即使有人停用其帐户并声称帐户的用户名也涉及限制和解决方法。这并不像提交表单并获取所需的用户名那么简单。不过,Instagram 上的 SYLVESTER G. BRYANT(也称为 Yt7crackersz)等专业人士可以帮助您完成此过程,而不会提出任何警告或造成延误。我亲自与他一起申请我自己想要的用户名。您可以通过 [电子邮件受保护] 与他联系。
我正在尝试使用 Maven maven-jaxb2-plugin 从简单类型的基本 int 生成枚举。但没有生成任何枚举。 我可以看到生成器正在使用绑定文件,因为它...
添加 maxOccurs 指示器后,为什么此 xml 架构对于 .NET 数据集变得无效?
将下面的 xml 传递给 C# 程序中的 DataSet.ReadXml 函数(使用 .NETFramework v4.8)时,该函数会抛出异常,表明 foo 的声明重复(“Dupli...
如何在java 11中使用JAXB Maven插件创建POJO类
需要在java 11中使用JAXB maven插件创建Pojo类,我在java 8中使用这个插件并且工作正常: org.jvnet.jaxb2.maven2...
我在解组时遇到了大问题。 我使用 xsd 文件中的 xjc 数据类生成。 这似乎工作没有任何问题。 现在我在我的 Kotlin 项目中尝试了这个 val jaxbContext = JAXBContext.
无法使用 JAXB 编组器为来自不同包的嵌套对象生成 XML
**XSD1** **XSD1** <xs:complexType name="Root1"> <xs:sequence> <xs:element name="Revision" type="xs:string" /> <xs:element name="Header" type="Header" /> <xs:element name="Body" type="SwAny" minOccurs="0" /> </xs:sequence> </xs:complexType> <xs:complexType name="SwAny" mixed="true"> <xs:sequence> <xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> The JAVA Object for the above XSD is like below @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "root1", propOrder = { "revision", "header", "body" }) public class Root1 implements Serializable { private final static long serialVersionUID = 1L; @XmlElement(name = "Revision", required = true) protected String revision; @XmlElement(name = "Header", required = true) protected SAA_Header header; @XmlElement(name = "Body") protected SAA_SwAny body; -- getter and setter -- } @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "SwAny", propOrder = { "content" }) public class SAA_SwAny implements Serializable { private final static long serialVersionUID = 1L; @XmlMixed @XmlAnyElement protected List<Object> content; } I have another XSD which I have marshalled and generated POJO objects like below @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "Header", propOrder = { "fr", "to" }) public class Header implements Serializable { private final static long serialVersionUID = 1L; @XmlElement(name = "Fr", required = true) protected PartyChoice__1 fr; @XmlElement(name = "To", required = true) protected PartyChoice__1 to; -- getter & setter -- } In my class where I marshall, I create like below and marshall Header header = new Header(); header.setFr(fr); header.setTo(to); Root1 **pdu** = new Root1(); **pdu**.setRevision("rev"); SAA_SwAny any = new SAA_SwAny(); any.getContent().add(header); Marshaller mars = cfgsvc.createMarshaller(jaxbCtx, true, "UTF8", false, localPart); String schemaLoc = cfgsvc.findSchemaLoc(localPart); JAXBElement<?> elm = new JAXBElement(xmlQName, docCls, **pdu**); sw = new StringWriter(); mars.marshal(elm, sw);` 按照上面的代码执行时,遇到下面的异常 原因:com.sun.istack.SAXException2:无法将类型“com.test.Header”封送为元素,因为它缺少 @XmlRootElement 注释 在 com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:225) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:274) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.property.ArrayReferenceNodeProperty.serializeListBody(ArrayReferenceNodeProperty.java:78) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:101) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:293) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:619) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:114) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:293) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:619) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:114) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:98) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:127) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:244) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:251) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:33) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:461) ~[jaxb-impl-2.0.1.jar:2.0.1] 在 com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:292) ~[jaxb-impl-2.0.1.jar:2.0.1] The workaround i did was in the header class added the below code **@XmlRootElement(name = "header", namespace = "head.namespace")** @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "Header", propOrder = { "fr", "to" }) public class Header implements Serializable { private final static long serialVersionUID = 1L; @XmlElement(name = "Fr", required = true) protected PartyChoice__1 fr; @XmlElement(name = "To", required = true) protected PartyChoice__1 to; -- getter & setter -- } now the xml marshaller works as expected and i get the below xml <?xml version="1.0" encoding="UTF8" standalone="yes"?> <PDU xsi:schemaLocation="...." xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Revision>rev</Revision> <Body> <head:Hdr> <head:Fr> <head:Id> <head:InstnId> <head:FI>AAAASGSGXXX</head:FI> </head:InstnId> </head:Id> </head:Fr> <head:To> <head:Id> <head:InstnId> <head:FI>AAAASGSGXXX</head:FI> </head:InstnId>`your text` </head:Id> </head:To> </head:Hdr> </Body> </PDU> 我期待一个无需手动添加 @xmlrootelement 的解决方案。 JAXB 有办法解决这个问题吗? 假设您正在使用像以前的 maven-jaxb2-plugin 这样的工具,并使用 jaxb api 3+ (雅加达版本),您可以使用以下绑定文件告诉 xjc 在生成的每个类上添加 @XmlRootElement (有趣的是部分是<xjc:simple/>) <?xml version="1.0" encoding="UTF-8"?> <jxb:bindings xmlns:jxb="https://jakarta.ee/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jxb:extensionBindingPrefixes="xjc" jxb:version="3.0"> <jxb:globalBindings> <xjc:simple/> </jxb:globalBindings> </jxb:bindings> 希望对你有帮助。 我说的是以前的maven-jaxb2-plugin,因为该插件在最新版本中被重命名(查看迁移指南)
我有以下xml文件: 8043501d8766ee1199370022482955e0 我有以下 xml 文件: <doc id="JOURNAL/otai/04.03/product/root"> <field name="name1">8043501d8766ee1199370022482955e0</field> <field name="name2">false</field> <field name="name3">2023-10-09T093500Z</field> </doc> 我需要创建一个 XSD 文件来检查 xml 文件的有效性,还需要根据 name 属性的值检查每个字段元素的内容类型。 例如: 8043501d8766ee1199370022482955e0 的内容类型为 string。 false 的内容类型为 boolean。 2023-10-09T093500Z 的内容类型为 date。 如果字段节点内容类型与这些类型不匹配,XSD 应该抛出错误,例如,whatever 应该抛出错误,因为“whatever”不能转换为布尔值,等等。 在验证输入 xml 时,XSD 应该如何执行这些检查? 谢谢! 我尝试了很多方法,但没有一个有效。 我正在尝试使用类型替代架构组件,但我无法使其工作。 这是我尝试过的: <?xml version="1.0" encoding="utf-8"?> <!-- Created with Liquid Technologies Online Tools 1.0 (https://www.liquid-technologies.com) --> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="doc"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="field"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="name" use="required" > <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="name1"/> <xs:enumeration value="name2"/> <xs:enumeration value="name3"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="copyTo" type="xs:string" use="optional" /> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:alternative test="@name='name2'"> <xs:element name="field" type="xs:boolean"/> </xs:alternative> </xs:element> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:schema> 如果我尝试验证 xml,则会收到以下错误: s4s-elt-must-match.1:“field”的内容必须匹配(annotation?,(simpleType | complexType)?,(unique | key | keyref)*))。发现问题始于:替代方案。 我希望 XSD 根据 name 属性的值验证字段元素的内容。 例如仅当字段元素内容可以解析为布尔值时,以 name2 作为名称属性值的字段元素才有效。 请尝试以下使用条件类型分配 (CTA) 的 XSD 1.1。 XML <doc id="JOURNAL/otai/04.03/product/root"> <field name="name1">8043501d8766ee1199370022482955e0</field> <field name="name2">false</field> <field name="name3">2023-10-09T09:35:00Z</field> </doc> XSD 1.1 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="doc"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" ref="field"/> </xs:sequence> <xs:attribute name="id" use="required"/> </xs:complexType> </xs:element> <xs:element name="field" type="xs:anySimpleType"> <xs:alternative test="@name eq 'name1'" type="StringType"/> <xs:alternative test="@name eq 'name2'" type="BooleanType"/> <xs:alternative test="@name eq 'name3'" type="DateTimeType"/> <xs:alternative type="xs:error"/> </xs:element> <xs:complexType name="StringType"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="name" use="required" type="NameAttrType"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="BooleanType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="name" use="required" type="NameAttrType"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="DateTimeType"> <xs:simpleContent> <xs:extension base="xs:dateTime"> <xs:attribute name="name" use="required" type="NameAttrType"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:simpleType name="NameAttrType"> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> <xs:maxLength value="100"/> <xs:enumeration value="name1"/> <xs:enumeration value="name2"/> <xs:enumeration value="name3"/> </xs:restriction> </xs:simpleType> </xs:schema>
我是 XSD 架构验证的新手。我正在寻找适用于 XSD 架构的 if else 条件。在互联网上进行了大量搜索后,我发现了“assert”元素,我们可以在其中测试条件
XML 架构 - maxOccurs="unbounded" 的元素包含多个可接受的类型
是否可以为 maxOccurs="unbounded" 的元素创建 XSD 架构,该元素接受不同的值类型作为其项目?例如: 首先
有没有办法使用 xsd 或 xsd2Code 生成单独的 xml 元素属性而不是集体属性
我正在尝试使用 xsd 或 xsd2code 从 XSD 文件生成 C# 类。 XSD 文件来自第三方,无法修改。 它确实生成类,但它们包含这样的块。 [