android xml引用xml,解析xml文件中引用xml文件的实体(android)

我正在使用XML文件将一些数据传递到我的Android应用程序,但随着它们变大,变得越来越难以避免丢失,所以我想分割一些部分把它变成更小的文件。也就是说,在第一地方,我有这样的事情:解析xml文件中引用xml文件的实体(android)

guests.xml

... ?>

Alice

no

everything

Bob

ofcourse

cocktails

,现在想有这样的:

guests.xml

... ?>

]>

&alice;

&bob;

这是更加消化。当然,alice.xml将围绕这些方针的东西:

... ?>

Alice

no

everything

于是,我就想出了这样的事情,使用不同的工具,可惜我没能取得任何接近目标。我的第一个失败是使用DOMParser。它使用一个“EntityResolver”,这是一个由SAXParser工具定义的接口。你实现它,覆盖功能,并返回自己的InputSource你想解析继续工作(如果我理解正确的):

public class MyResolver implements EntityResolver {

public InputSource resolveEntity (String publicId, String systemId){

...

}

}

现在,它工作在一个普通的Java环境中拔尖,但在Android的函数永远不会被调用(我怀疑有一些问题)。所以我继续,并尝试使用XmlPullParser(推荐的Android解析器)。我从来没有真正喜欢过XmlPullParser(也许是因为我没有花时间去喜欢它),但我得到它的工作,至少没有实体。不幸的是,我似乎错过了一件重要的事情,并且无法得到我想要的实体。如果我是正确的,有两种模式使用DTD:

设置功能XmlPullParser.FEATURE_PROCESS_DOCDECL,并让解析器过程中的DTD本身。然后,它应该读取所​​谓的“替换文本”而不​​是&。实体。

取消设置,并使用defineEntityReplacementText(String,String)方法自己处理DTD,该方法在实体名称和替换文本之间创建映射。

令我困扰的是唯一的替代品可能是...文本。那么我是否应该用它所指的另一个XML文件的全部内容替换每个实体?但是,然后解析器不会将它看作是要解析的文件,而只是一个给定元素的超长值。

无论如何,选项1)只是没有为我工作,就好像DTD是在文件本身定义的(例如像在guests.xml中)我得到一个异常如果我不使用关键字像“公共”或“系统”。如果我确实使用“SYSTEM”,则给定实体的替换文本仅为空。如果DTD在file.dtd中定义,则所有替换文本都只是空字符串。

我没有勇气尝试选项2.因为我觉得一旦我在“defineEntityReplacementText”地图中填充了所有需要的条目,我最终会遇到同样的问题。

是否有人看到任何推理错误或解决方法,不涉及创建我自己的 alice.xml 元素并自行解析它?

非常感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值