ElementList SimpleXML 中的空条目

2023-12-12

我的问题很简单,但我找不到任何相关信息。

我有一个用于 XML 序列化的列表类和入口类:

@Root(name = "entries")
public class List {

    @ElementList(required = false, entry = "entry", inline = true, empty = true)
    private List<Entry> entries;
}

@Root
public class Entry {

    @Element(name = "entry_id", required = true)
    private long id;

    @Element(name = "text", required = true)
    private String Text;
}

我正在尝试解析此 XML,该 XML 列表中没有任何条目:

<entries>
   <entry />
<entries>

返回以下错误:

W/System.err(3335): org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Element(data=false, name=entry_id, required=true, type=void) on field 'id' private long com.android.apps.model.Entry.id for class com.android.apps.model.Entry at line 2

我究竟做错了什么? ElementList 设置为empty = true 且required = false。 有人可以帮忙吗?


您可以手动检查空元素:

@Root(name = "entries")
@Convert(List.ListConverter.class) // Set the converter
public class List
{
    @ElementList(required = false, entry = "entry", inline = true, empty = true)
    private java.util.List<Entry> entries;


    public void add(Entry e)
    {
        // Just for testing
        entries.add(e);
    }



    static class ListConverter implements Converter<List>
    {
        @Override
        public List read(InputNode node) throws Exception
        {
            List l = new List();
            InputNode child = node.getNext("entry");

            while( child != null)
            {
                if( child.isEmpty() == true ) // child is an empty tag
                {
                    // Do something if entry is empty
                }
                else // child is not empty
                {
                    Entry e = new Persister().read(Entry.class, child); // Let the Serializer read the Object
                    l.add(e);
                }

                child = node.getNext("entry");
            }

            return l;
        }


        @Override
        public void write(OutputNode node, List value) throws Exception
        {
            // Not required for reading ...
            throw new UnsupportedOperationException("Not supported yet.");
        }
    }
}

如何使用:

Serializer ser = new Persister(new AnnotationStrategy()); // Set AnnotationStrategy here!
List l = ser.read(List.class, yourSourceHere);

文档:

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

ElementList SimpleXML 中的空条目 的相关文章

随机推荐

  • 为什么 LocalizedStringKey 的行为取决于我是否将字符串插值传递给其初始化程序?

    在试图回答的同时这个问题 我发现了一个奇怪的行为 Text LocalizedStringKey Hello Image systemName globe 显示一个地球仪 但是 Text LocalizedStringKey Hello w
  • 如何使用 Firebase 托管 Web 应用程序获取没有 CORS 标头的外部数据?

    我的 Ionic2 应用程序托管在 Firebase 上 我需要的是从 API 服务获取外部数据 请求中不存在 Access Control Allow Origin 标头 资源 我可以通过使用代理在本地解决这个问题ionic config
  • 在 Node.js 中存储敏感凭证的最佳方式是什么?

    几天前我开始学习 Node js 我面临着一个关于数据库凭据和Gmail连接 最后一个是需要的nodemailer 我基本上创建了一个这样的文件 const config development url 127 0 0 1 database
  • 有没有办法更改 chrome 扩展弹出窗口的位置/位置?

    我正在尝试开发一个 chrome 扩展 我想知道是否有办法更改 chrome 扩展弹出窗口的位置以及是否可以将其设为粘性元素 例如 名为Equatio 显示一个类似粘性的弹出窗口 当单击其图标时 该弹出窗口保留在用户屏幕的底部 我也希望能够
  • 我能保证在 mysql 中使用单个插入语句获得连续的 id 吗?

    我使用单个 INSERT 查询插入 1000 行 查询返回第一个插入行的 id 假设所有其他行都有 id 是否可以保存firstId i考虑到可能有多个插入查询同时运行 或许 通常是的 但在很多情况下这是不可靠的 MySQL JDBC 驱动
  • 为什么需要内存屏障?

    C 4 in a Nutshell 强烈推荐 使用以下代码来演示 MemoryBarrier 的概念 假设 A 和 B 在不同的线程上运行 class Foo int answer bool complete void A answer 1
  • Matlab 图形绘制 - 带标签的图例和曲线

    如何绘制如下图所示的图形 这里 图例 绿色 蓝色 在每条曲线上绘制了一些值 0 10 到 0 40 有没有可能的解决方案或提示来做到这一点 图参考 可以使用以下命令在行内绘制数据标签clabel 轮廓标签 尽管这要求您使用contour命令
  • 热通过cmd禁用buildnumber-maven-plugin

    我对 Maven 有疑问 如何通过命令行选项禁用 buildnumber maven plugin 我想在我们的持续集成服务器上运行 mvn test 命令 但是这个命令失败了 因为它试图构建一个版本并且没有访问我们的 vcs 的权限 在标
  • 用Java解析包含JS的HTML页面

    我正在尝试解析一个包含一些 JS 的网页 到目前为止我正在使用Jsoup在Java中解析html 它按预期工作 但我无法解析 JavaScript 下面是 HTML 页面的片段
  • grok 多条消息并用不同的标签处理它们

    我想在 Logstash 版本 2 4 中创建一个过滤器 在同一个 grok 中使用不同的匹配项 我想根据比赛添加不同的标签 基本上 我收到三种不同的消息模式 MAGIC 消息 REAL 消息 信息 我想做的是 grok match gt
  • 一个不错的 Java XML DOM 实用程序

    我发现自己一次又一次地编写同样冗长的 DOM 操作代码 Element e1 document createElement some name e1 setAttribute attr1 val1 e2 setAttribute attr2
  • 表格固定标题和可滚动正文

    我正在尝试使用 bootstrap 3 表制作一个具有固定标题和可滚动内容的表格 不幸的是 我发现的解决方案不适用于引导程序或搞乱风格 这里有一个简单的引导表 但由于某种原因我不知道 tbody 的高度不是 10px height 10px
  • ASP.NET 中的 XML POST 和解析

    如果有人将 XML 从应用程序发布到我的 ASP NET 页面 我如何解析它并以 XML 格式返回响应 将 XML 发布到我的 URL 的示例客户端代码 WebRequest req null WebResponse rsp null st
  • 升级 Android 项目中的领域

    我目前正在我的 Android 项目之一中运行 Realm 版本 0 82 0 我已经有一段时间没有接触 Realm 了 直到最近我注意到它们同时升级到了 2 0 2 版本 我想升级我的 Realm 版本 不幸的是 我不知道从旧版本升级到当
  • 在javafx中将纹理应用于网格

    我在使用 JavaFX 和 FXyz 0 1 1 将纹理应用到网格时遇到问题 I found 这个问题即使有详细的答案也无法弄清楚 我从头开始 准确地复制答案中的代码 场景是黑色的 没有可见的二十面体 我使用的是 Java 8 提供的图像是
  • 启动 asp.net 站点调试时 Visual Studio 2010 挂起

    我在 Windows 7 x64 上使用 Visual Studio 2010 时遇到问题 当我开始 ASP NET 站点调试时 它停止工作 唯一的解决方案是重新启动 IIS 有人有这方面的经验吗 Thanks 正如 Peter 提到的 通
  • 在 .NET Framework 4.0 中使用 TLS 1.2 时出现问题

    我禁用了 TLS 1 0 因此 我们尝试在使用 Net Framework 4 0 的 Net 应用程序中使用 TLS 1 2 我在开始时添加了此代码 System Net ServicePointManager SecurityProto
  • 如何在 JavaScript 中打开新选项卡而不切换到新选项卡?

    如何使用 javascript 打开新选项卡而不切换到新选项卡 例如 当用户单击链接时 将打开一个新选项卡 但用户应留在当前选项卡上 Web 浏览器会自动聚焦在新选项卡上 但您可以回调焦点 function openWindow url w
  • UITableViewCell 中的自动播放视频

    我已阅读了大部分问题StackOverflow用于自动播放视频 我可以在UITableView 但我遇到了一些如下所述的问题 视频开始时滚动会暂停一秒钟 视频播放前闪烁 如果向上滚动 视频不会自动播放 我想要的是像 Facebook 这样的
  • ElementList SimpleXML 中的空条目

    我的问题很简单 但我找不到任何相关信息 我有一个用于 XML 序列化的列表类和入口类 Root name entries public class List ElementList required false entry entry in