java中用simplexml反序列化xml

2023-11-30

我正在尝试使用 SimpleXML 反序列化 xml 字符串,我查看了他们的示例,但我不确定我是否掌握了这个概念。

示例 XML(验证):

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<Response xmlns="http://localhost/webservices/">
<Result>
<Item><ID>0</ID><language /><price>168</price></Item>
<Item><ID>1</ID><language /><price>178</price></Item>
<Item><ID>2</ID><language /><price>195</price></Item>
<Item><ID>3</ID><language /><price>169</price></Item>
<Item><ID>4</ID><language /><price>178</price></Item>
<Item><ID>5</ID><language /><price>178</price></Item>
<Item><ID>6</ID><language /><price>149</price></Item>
<Item><ID>7</ID><language /><price>178</price></Item>
<Item><ID>8</ID><language /><price>168</price></Item>
<Item><ID>9</ID><language /><price>179</price></Item>
<Item><ID>10</ID><language /><price>147</price></Item>
<Item><ID>11</ID><language /><price>165</price></Item>
<Item><ID>12</ID><language /><price>192</price></Item>
<Item><ID>13</ID><language /><price>218</price></Item>
<Item><ID>14</ID><language /><price>144</price></Item>
<Item><ID>15</ID><language /><price>141</price></Item>
</Result>
</Response>
</soap:Body></soap:Envelope>

和java代码:

    @Root(name="Result",strict=false)
public class ItemList {

    @ElementList(entry="Item")
    private List<Item> _list;

    public List<Book> GetItemList() 
    {
        return _list;
    }

    public void SetItemList(List<Item> value) 
    {
        this._list = value; 
    }
}

@Root(strict=false)
public class Item {
    @Element(name="ID")
    private String _ID;
    @Element(name="price")
    private String _price;


    public String GetPrice()
    {
        return _price;
    }

    public void SetPrice(String value)
    {
        this._price = value;
    }

    public String GetID()
    {
        return _ID;
    }

    public void SetID(String value) 
    {
        this._ID = value;
    }

    public Item(String ID,
                String price) 
    {
        this._ID = ID;
        this._price = price;
    }
}

任何帮助表示赞赏。


我有一个建议,但它还没有准备好运行(见下文)。然而,也许还有另一个更好的解决方案......

类别项目

持有您的所有信息。

@Root(name="Item")
public class Item
{
    @Element(name="ID", required=true)
    private int id;
    @Element(name="language", required=true)
    private String language;
    @Element(name="price", required=true)
    private int price;


    // ...
}

班级成绩

构建周围的一切Item。顺便提一句。您不必在这里使用内部类。

@Namespace(prefix="soap", reference="http://schemas.xmlsoap.org/soap/envelope/")
@Root(name="Envelope")
public class Result
{
    @Namespace(prefix="soap")
    @Element(name="Body")
    private SoapBody body;


    // ...


    // -----------------------------------------------------------------
    // -- Some inner classes, constructing the elements as in you xml --
    // -----------------------------------------------------------------


    @Namespace(prefix="soap")
    @Root(name="Body")
    static class SoapBody
    {
        @Element(name="Response")
        private Response response;


        // ...
    }



    @Root(name="Response")
    static class Response
    {
        @ElementList(name="Result", required=true)
        private List<Item> result;


        // ...
    }
}

(示例)如何使用此代码

Writing

File f = ...

Serializer ser = new Persister();
Result r = new Result();
ser.write(r, f);

Reading

File f = ...

Serializer ser = new Persister();
Result r = ser.read(Result.class, f);

现在...有一个问题导致该示例无法运行:<language />这个空元素让 SimpleXML 抛出一个ValueRequiredException.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中用simplexml反序列化xml 的相关文章

随机推荐

  • 是否可以增加 ActionBarDrawerToggle(抽屉菜单)的大小?

    我跟着ActionBarDrawer切换指南 我知道如何使用在操作栏上显示抽屉图标drawerImageRes在这 public ActionBarDrawerToggle 活动活动 DrawerLayout 抽屉布局 int抽屉图像Res
  • Tensorflow shuffle batch() 块在纪元结束时

    我正在使用 tf train shuffle batch 创建批量输入图像 它包含一个 min after dequeue 参数 该参数确保内部队列中有指定数量的元素 如果没有 则阻止其他所有元素 images label batch tf
  • 如何从 C++ 源代码创建 DLL,以及如何在其他源代码中使用它们?

    如何从 C 源代码创建 DLL 以及如何在其他源代码中使用它们 DLL 是一个 动态链接库 其工作方式与其他库非常相似 但不与可执行应用程序链接 在运行时 您可以调用特定函数来加载 DLL 并执行其导出的方法 您可以尝试自己创建 DLL 使
  • IFormattable.ToString 无法按十六进制格式的预期工作

    尝试格式化为十六进制时 String Format 和 IFormattable ToString format value 提供不同的结果 使用 IFormattable ToString format value 时如何获得正确的结果
  • 使用 ruby​​ 或 python 在文件中查找

    流行的文本编辑器具有以下在对话框中打开的 在文件中查找 功能 Look For searchtext File Filter txt htm Start From c docs 2009 Report Filenames FileCount
  • 如何解决haskell中的“堆栈空间溢出”

    运行以下程序将打印 空间溢出 当前大小8388608字节 我读过了this and this 但仍然不知道如何解决我的问题 我正在使用foldr 难道不应该保证它是 尾递归 吗 到目前为止 我对 Haskell 感觉很好 直到我知道在使用强
  • 处理异常的最佳方法是什么以及如何在 ASP.NET 中处理它们

    首先 我已经熟悉了简单的异常处理语法 但我问的是处理它们的最佳地点 最佳时间和最佳方式 我正在构建一个 N 层应用程序 所以我认为 DAL 有时会生成一些错误来处理 我刚刚了解了 SqlException 类 该类有什么用 我曾经看到一个处
  • 如何使用 GitLab CI 设置最小单元测试覆盖率?

    我有一个托管在 GitLab 上的项目 该项目已经具有有效的 CI 配置 我想添加 最小代码覆盖率 的概念 我想要的是强制一个正增量 合并请求的代码覆盖率必须大于目标分支的代码覆盖率 除非它已经是 100 我会接受 最低覆盖率 80 之类的
  • 隐藏 woocommerce 设置选项卡

    我想按用户角色隐藏特定的 woocommerce 设置选项卡 不是整个子菜单 而只是一个选项卡 具体请查看 我希望商店经理能够访问大部分设置 但无法影响结账设置 我怎样才能实现这个目标 如果您想删除选项卡而不是使用 CSS 隐藏它们 那么您
  • MemberDomainMap 中的实体框架 CodeFirst KeyNotFoundException

    尝试解决我的 EF datacontext 实现中的一个错误 该错误产生了一个相当神秘的错误 Test Name Nodes can be saved Test FullName MyProj Test Integration AFData
  • 如何绕过唯一ID和引用子节点

    我的 firebase 数据库如下所示 app users gn4t9u4ut304u9g4 email uid 如何引用电子邮件和 uid 当我尝试这个时 rootScope dashtype child users orderByChi
  • 在 Firebase Cloud Messaging 中将一个项目用于多个应用程序的优缺点

    在我们公司 我们有许多适用于 Android 和 iOS 的应用程序 我们想使用 Firebase 来推送通知 那么 我们是否需要创建新的project在每个应用程序的 Firebase 中 或者只使用一个包含所有应用程序的项目会更好吗 两
  • Neo4j Cypher:复制关系并删除节点

    我正在尝试复制节点的所有内部关系 n 到另一个节点 m 两个女巫我都知道id 在删除之前 n 但我无法提出代码 这些关系可能存在也可能不存在 有人摘录吗 您将无法从关系集合中动态创建关系类型 假设即使我们收集所有传入关系如下 START n
  • VB6 中是否有导出函数(而不是类)的方法?

    我想从 Visual Basic 6 创建一个 ActiveX DLL 我想从中调用一些公共函数 我将仅从 VB6 调用此 DLL 然而 似乎只有类被导出 有什么解决方法吗 我知道有一种方法可以使用标准 WINAPI 函数从 VB6 创建
  • 将两个 Xpath 组合成一个循环?

    我正在使用 xpath 从文档中获取信息 唯一的问题是我无法将它们组合成 1 个 for 循环 以便信息在页面上正确显示 我的代码是
  • 从 UI 选择特定时区时在 javascript/jquery 中添加类

    我正在编写如下所示的 html 代码 该代码来自此url In it 显示在 ET 时区下显示 100 正确 因为它们属于正确的日期但对于其他时区 PT MT CT AT NT 某些节目的日期不正确 代码下方的屏幕截图属于该类日程操作栏从下
  • Mysql自动更新事件

    使用 php 和 MySql 无论如何都可以在日期过期时获取数据库中的日期以自行更新 即事件名称 x 的日期为 2012 05 12 在 2012 05 13 日期应更改为 2012 05 19 从 2012 05 12 算起一周 多谢你们
  • 在哪里初始化托管 C++/CLI DLL?

    使用 C CLI 创建 DLL 时 或者我应该问 是否存在与 DllMain 等效的东西 这段初始化代码中不能调用的内容是否有任何限制 Dan 关于加载器锁 C CLI 的 CLR 延迟加载以及混合模式二进制文件的正确初始化 我昨天刚刚在这
  • Pyqt:从函数“动态”附加到 qtextedit

    我的 pyqt gui 中有一个按钮 单击该按钮会运行一个函数 该函数会执行一些冗长的数学计算 在这个函数中有很多打印语句 例如 print finished calculating task1 going on to task2 因此 通
  • java中用simplexml反序列化xml

    我正在尝试使用 SimpleXML 反序列化 xml 字符串 我查看了他们的示例 但我不确定我是否掌握了这个概念 示例 XML 验证