gpt4 book ai didi

java - 在 SAAJ 内操作 SAAJ/raw xml 访问中的命名空间前缀

转载 作者:太空宇宙 更新时间:2023-11-04 08:58:21 26 4
gpt4 key购买 nike

我的基于 SAAJ 的客户端生成以下 XML 并将其发送到 .NET Web 服务:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<AuthenticationHeader xmlns="http://www.w3.org/2001/XMLSchema-instance">
<Password xmlns="http://schemas.datacontract.org/2004/07/">temp123</Password>
<UserName xmlns="http://schemas.datacontract.org/2004/07/">temp321</UserName>
</AuthenticationHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<GetTracks xmlns="http://tempuri.org/">
<TrackName>baby</TrackName><ArtistID>0</ArtistID><AlbumID>0</AlbumID><Start>0</Start><Count> 20</Count>
</GetTracks></SOAP-ENV:Body></SOAP-ENV:Envelope>

我遇到的问题是,对于 AuthenticationHeader 元素,我必须定义一个前缀,但不应将其附加到最开始。这正是我需要生成的内容,以免从网络服务中收到错误:

<AuthenticationHeader xmlns:i="http://www.w3.org/2001/XMLSchema-instance">

如果我在名称创建期间生成前缀,它会自动添加到 xmlns 属性之后和元素的最开头。

我试图浏览整个 javax.xml.soap 包,但找不到任何可以帮助我解决这个问题的东西。您能给我一个提示,告诉我该往哪个方向生成这样的 xml 吗?

顺便说一句,我想知道这对于 Web 服务来说是否是拒绝有效 xml 的有效行为?这种解释行为的动机是什么?

谢谢!

最佳答案

Java SOAP API 通常假定与其通信的服务符合规范,因此细粒度前缀控制之类的内容不会通过 API 公开,因为没有理由关心。

在以前的类似情况中,我经常不得不手动构建 SOAP DOM 对象,这是非常痛苦的。

最近,我相当幸运地获得了 Spring WebServices生产出我想要的东西。它抽象了 SAAJ API,同时仍然提供了在 XML 级别上使用 DOM 的钩子(Hook)。我建议您尝试一下,看看您能想出什么办法。

关于java - 在 SAAJ 内操作 SAAJ/raw xml 访问中的命名空间前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com