标签: simple-framework

无法使用Retrofit 2和Simple XML Converter获取SOAP信封体

我正在使用Retrofit 2.2.0和Retrofit SimpleXML Converter 2.2.0.我用方法添加SimpleXmlConverterRetrofit实例中addConverterFactory.

问题是,当我收到响应时,它会收到以下错误

java.lang.RuntimeException:org.simpleframework.xml.core.ElementException:元素'Body'在第1行的ResponseEnvelope类中没有匹配项

我应该得到这样的XML响应:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <ns:autenticarUsuarioPorEmailResponse xmlns:ns="http://business.curitiba.org.br">
         <ns:return xsi:type="ax2471:AutenticaUsuarioPorEmailSaida" xmlns:ax2471="http://saidas.curitiba.org/xsd" xmlns:ax2469="http://entities.curitiba.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax2467="http://entradas.curitiba.org/xsd">
            <ax2471:idCredencial>3282</ax2471:idCredencial>
            <ax2471:tokenAcesso>635E3DA9-7C02-4DB7-9653-E7688C66B02C</ax2471:tokenAcesso>
         </ns:return>
      </ns:autenticarUsuarioPorEmailResponse>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

ResponseEnvelope.java

@Root(name = "soapenv:Envelope")
@Namespace(prefix = "soapenv", reference = "http://schemas.xmlsoap.org/soap/envelope/")
public class ResponseEnvelope {

    @Element(name = "soapenv:Body", required = false)
    private ResponseBody body;

    public ResponseBody getBody() {
        return body;
    }

    public void setBody(ResponseBody body) {
        this.body = body;
    }
}
Run Code Online (Sandbox Code Playgroud)

ResponseBody.java

@Root(name = "soapenv:Body", strict = false)
public class …
Run Code Online (Sandbox Code Playgroud)

xml android soap simple-framework retrofit

6
推荐指数
1
解决办法
1842
查看次数

如何使用Simple XML序列化Map <String,String>?

您将如何使用简单的XML序列化Map ,使其看起来像:

<elem foo="value">key</elem>
Run Code Online (Sandbox Code Playgroud)

而不是正常的

<elem foo="key">value</elem>
Run Code Online (Sandbox Code Playgroud)

(地图是一对多的,因为这将由人类编辑,我希望它更清晰.)

[编辑]:不修复.

java simple-framework

5
推荐指数
1
解决办法
3209
查看次数

5
推荐指数
2
解决办法
1442
查看次数

方便使用Android XmlResourceParser?

当我需要访问已编译的Android XML资源时,似乎我无法使用,openRawResource(resId)因为它给了我一个编译的二进制文件.

我发现获取XML的唯一方法是使用getXml(resId)返回XmlResourceParser(实现XmlPullParser).

如何从Android资源中方便地反编译复杂的编译XML(但不是很大)?

我试图破解Simple XML框架:

val serializer = new Persister()
serializer.read(classOf[AFoo], 
    new NodeReader(new PullReader(r.getXml(resId))).readRoot)
Run Code Online (Sandbox Code Playgroud)

(上面的Scala代码已经过简化.)

然而它失败了:

java.lang.RuntimeException: getPrefix not supported
    at android.content.res.XmlBlock$Parser.getPrefix(XmlBlock.java:156)
    at org.simpleframework.xml.stream.PullReader$Start.<init>(PullReader.java:373)
    at org.simpleframework.xml.stream.PullReader.start(PullReader.java:143)
    at org.simpleframework.xml.stream.PullReader.read(PullReader.java:109)
    at org.simpleframework.xml.stream.PullReader.read(PullReader.java:117)
    at org.simpleframework.xml.stream.PullReader.next(PullReader.java:89)
    at org.simpleframework.xml.stream.NodeReader.readElement(NodeReader.java:111)
    at org.simpleframework.xml.stream.NodeReader.readRoot(NodeReader.java:85)
Run Code Online (Sandbox Code Playgroud)
  • 是否有任何不调用的XML反序列化器getPrefix
  • 或者是否已经存在Node从中构建树的Scala库XmlPullParser?(因此可以使用Scala投影函数查询它.)
  • 或者您是否有任何其他提示如何从资源中读取小而复杂的编译XML?

android scala xml-parsing android-resources simple-framework

5
推荐指数
1
解决办法
477
查看次数

使用简单连接器删除请求的Restlet?

我遇到了一个非常奇怪的问题,浏览器的HTTP请求似乎被Restlet服务器使用的Simple连接器丢弃.

服务器设置:

  • Restlet 2.1.2服务器
  • Restlet-Simple扩展(Simple 4.1.21附带)
  • 用于摘要式身份验证的Restlet-crypto扩展

服务器正在为浏览器提供网页,并使用javascript的XMLHttpRequest来获取更新.但是,其中一些XMLHttpRequests并未完成.Chrome的javascript调试程序显示这些的"失败"状态; Firefox的调试器记录完成时间,没有HTTP状态代码和记录的响应.数据包嗅探器指示有问题的请求实际发送到服务器,但服务器从不响应.调试显示这些请求永远不会到达我们的服务器代码.

我已经验证了Firefox,Chrome以及IE的问题.所有三个浏览器(最新版本)都遇到了这个问题.而且,每个浏览器都重复且可重复地具有完全相同请求的问题.但是这组请求在三种浏览器之间有所不同.

真正奇怪的是,当使用服务器的机器名称(测试在LAN上运行)时,问题确实浮出水面,但在使用机器的IP地址时却没有.从摘要切换回基本身份验证也会使问题消失,就像用Jetty替换Simple连接器一样.

我现在倾向于转向Jetty,但我仍然想知道发生了什么.有没有人见过这样的行为,或者对这里出了什么问题有所了解?

java restlet digest-authentication simple-framework

5
推荐指数
1
解决办法
418
查看次数

Android Studio导入库Gradle:错误:包org.simpleframework.xml不存在

我无法在Android Studio中制作项目.编译项目时我有一些错误:

Gradle: error: package org.simpleframework.xml does not exist
Gradle: error: cannot find symbol class Element
Gradle: error: cannot find symbol class Element
Run Code Online (Sandbox Code Playgroud)

我手动添加jar,从Dependencies添加到项目.

如何修复?!

好的,我解决了.问题解决了.我手动添加到配置文件库libs/simple-xml-2.7.jar.

dependencies {
    compile files('libs/android-support-v4.jar', 'libs/commons-net-3.3.jar', 'libs/simple-xml-2.7.jar')
}
Run Code Online (Sandbox Code Playgroud)

gradle simple-framework android-studio

5
推荐指数
1
解决办法
3061
查看次数

简单的框架跳过肥皂信封和身体

我正在使用Android中的RetroFitSimple XMLFramework来模拟SOAP响应,如下所示:

XML:

<soap:Envelope 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
    <BuslocationResponse 
        xmlns="AT_WEB">
        <Version>1.0</Version>
        <Responsecode>0</Responsecode>
        <Input>
            <Route>801</Route>
            <Direction>N</Direction>
        </Input>
        <Vehicles>
            <Vehicle>
                <Route>801</Route>
                <Direction>N</Direction>
                <Updatetime>09:42 PM</Updatetime>
                <Vehicleid>5007</Vehicleid>
                <Block>801-06</Block>
                <Adherance>-2</Adherance>
                <Adhchange>S</Adhchange>
                <Reliable>Y</Reliable>
                <Offroute>N</Offroute>
                <Stopped>N</Stopped>
                <Inservice>Y</Inservice>
                <Speed>20.61</Speed>
                <Heading> 3</Heading>
                <Routeid>44916</Routeid>
                <Positions>
                    <Position>30.221222,-97.765007</Position>
                    <Position>30.218363,-97.766747</Position>
                    <Position>30.215282,-97.768715</Position>
                    <Position>30.212505,-97.770485</Position>
                    <Position>30.204943,-97.774765</Position>
                    <Position>30.204035,-97.775078</Position>
                </Positions>
            </Vehicle>
        </Vehicles>
</BuslocationResponse>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

真的,我关心的只是车辆的集合.似乎我只能模拟BusLocationResponse并通过声明来跳过肥皂信封和身体

Java的:

@Root(strict=false)
@Path("Envelope/Body/BuslocationResponse")
public class BusLocationResponse {

    @Element(name="Responsecode")
    public int responseCode;

    @ElementList
    @Path("Envelope/Body/BuslocationResponse/Vehicles")
    public List<CapVehicle> vehicles;

}
Run Code Online (Sandbox Code Playgroud)

这只会产生错误:

org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy
@org.simpleframework.xml.Element(data=false, name=Responsecode, required=true, …
Run Code Online (Sandbox Code Playgroud)

java android simple-framework retrofit

5
推荐指数
1
解决办法
3220
查看次数

Android - XML 序列化 - simpleframework - 带有可选元素的路径(required = false) - 如何隐藏空值元素?

我想使用 @PATH 来保持元素的顺序,但是,有一些可选元素(required = false),并且当它们的值为 NULL 时我无法隐藏这些元素。

@Order(elements={"Name", "Nickname"})
public class InfosType
{
    @Element
    @Path("Name")
    private String name;
    @Element(required=false)
    @Path("Nickname")
    private String nickname;
}
Run Code Online (Sandbox Code Playgroud)

即使昵称= NULL,xml文件也总是有昵称字段:

<Name>David</Name>    
<Nickname/>
Run Code Online (Sandbox Code Playgroud)

但我想要这个:

<Name>David</Name>    
Run Code Online (Sandbox Code Playgroud)

我的目标是序列化 xml 文件并保持可选元素的顺序。

对我有什么建议吗(Android 的一些东西,比如 simpleframework 可以帮助我,等等)?谢谢。

android xml-serialization simple-framework option-type

5
推荐指数
1
解决办法
675
查看次数

在Android改造中集成Simple XML转换器时遇到的问题

在为Android改造中集成Simple XML转换器时,我遇到了一些问题.
1).在build.gradle中添加"compile('com.squareup.retrofit:converter-simplexml:1.9.0')"后,我收到了编译错误.

错误报告:信息:Gradle任务[:app:assembleDebug]警告:调试将忽略依赖关系xpp3:xpp3:1.1.3.3,因为它可能与Android提供的内部版本冲突.如果出现问题,请使用jarjar重新打包以更改类包警告:依赖xpp3:xpp3:1.1.3.3因发布而被忽略,因为它可能与Android提供的内部版本冲突.如果有问题,请用jarjar重新打包以更改类包

2).我通过提供根类名称在http://pojo.sodhanalibrary.com/Convert的帮助下创建了Java Schemas .我继续为一个或另一个元素获取InstantiateException或ElementException,并且mazorly retrofit.converter.ConversionException:org.simpleframework.xml.core.ValueRequiredException:无法满足@ org.simpleframework.xml.Element(data = false,name = description字段"description"上的,required = true,type = void).许多字段的错误相同.

integration android converter simple-framework retrofit

5
推荐指数
1
解决办法
2321
查看次数

简单的XML-2个元素,相同名称的不同命名空间

我需要将XML字符串解析为对象。我会使用SimpleXML,但是出现错误Duplicate annotation of name 'link' on field 'url' private java.lang.String com.example.rogedormans.xmlreader.XML.Alert.Channel.url

具有相同问题的示例XML:

<rss........>
     <channel>
         <title>The Title</title>
         <link>http://www.someurl.com</link>
         <description>Some description</description>
         <atom:link href="http://dunno.com/rss.xml" rel="self" type="application/rss+xml"/>
        ....
        ....
    </channel>
 </rss>
Run Code Online (Sandbox Code Playgroud)

我GOOGLE了一番,发现这个这个这个计算器的文章,但没有为我工作。我也看过了简单的XML文档,但我不能得到它的工作。

如何将两个“链接”项都放入对象?(我认为这与名称空间有关,但是呢?)

一个代码示例会很好!!!

android xml-namespaces xml-parsing simple-framework

5
推荐指数
1
解决办法
937
查看次数