当前位置: 首页 > 面试题库 >

JAXB自定义名称空间前缀问题

幸鸿轩
2023-03-14
问题内容

除了包级别注释外,还有其他方法可以使用注释来控制自定义名称空间前缀@Xmlns

可以在元素级别完成吗?也可能有一个带有多个前缀的名称空间吗?


问题答案:

您实际上想做什么?为什么名称空间前缀对您很重要?

对于命名空间前缀,没有标准的元素级注释。

我知道的控制名称空间前缀的选项是:

  • @XmlNS 你已经提到过。
  • 提供习俗NamespacePrefixMapper
  • XML的低级处理(例如,在StAX,SAX或DOM级别)。

我也可以想象:

  • @XmlElementRef/ @XmlElementRefs通常使用具有带有前缀的QName的JAXBElement。也许将使用此前缀。
  • 您可以具有QName-typed属性(xs:QName在XSD中),也可以用于添加名称空间映射。
  • 可能是某个方向@XmlAnyElement(包含DOM元素)。
  • 我想我也看到了一些方向XmlAdapter-我认为某个地方可以NamespacePrefixMapper意识到它。(对于像那样的名称空间感知类型,实际上是必需的QName


 类似资料:
  • 面临使用JAXB解组的问题。我需要使用多个名称空间。Java类是为第三方提供的XSD生成的。因此,我不想在Java类中的XMLRootElement指定名称空间,也不想手动更改多个类。 编组逻辑如下: xmlelement类TokenRequest.java BasicInRequestType.java 我在package-info.java中指定了前缀 TokenRequest元素实际上引用了

  • 我正在开发一个客户端来使用 Web 服务,但由于某种原因,除非所有命名空间都正确且没有任何前缀,否则我的请求没有得到正确处理。 我所有的类都是由服务提供商使用提供的XSD和WSDL创建的。 NfeDadosMsg.class 包装信息.java TConsStatServ.class package br.inf.portalfiscal.nfe; 包装信息.java 输出xml: 由于某种原因,

  • 我想知道是否有一种方法来强制JAXB创建与XSD模式相同的名称空间前缀。即,即使我从一个包含xmlns:cts=“http://cts.com”的模式创建JAXB类,在封送类之后,我得到一个具有xmlns:ns1前缀的XML。我知道我可以通过使用NamespacePrefixMapper类来重写这些,但是为什么我需要在我的XSD明确定义了默认前缀的情况下手动执行此操作呢?在我当前的XML中有大量的

  • 2)如果我按照下面的方式编辑package-info,那么它是很好的,但是问题是我创建的是一个JAXB整数元素如下所示,前缀删除没有应用于这些元素

  • 例如,一个XML属性值是,但名称空间前缀“repository”从未在数据集中定义。(不要紧,提供商的最佳实践建议定义它!) 所以当我去解封一个示例集时,具有指定前缀的QName属性(在我上面的示例中为“Repository”)是空的!所以看起来JAXB正在“抛出”那些具有未定义名称空间前缀的属性QName值。我很惊讶,它甚至没有保留当地的名字。 理想情况下,我希望保持该值原样,但看起来我无法在绑

  • 我有5个schemas.xsd,用于生成Java类,然后封送XML文件。 问题是只有一种情况--对于这个文件,JAXB生成额外的名称空间前缀NS2。这是非常奇怪的,因为所有模式都是相同的,并且编组机制对于所有模式都是通用的。 生成机制: 对于不能正常工作的包: 包信息: 对象-工厂 良好工作包: 包信息: 和对象工厂看起来完全一样(当然除了命名)。