当前位置: 首页 > news >正文

南开做网站公司番禺建设网站公司

南开做网站公司,番禺建设网站公司,公众号外链网站怎么做,wordpress 首页被跳转Java中的XML库是一个雷区。 操作和读取XML所需的代码量令人震惊#xff0c;使用不同的库遇到类路径问题的风险很大#xff0c;并且命名空间的处理带来了很多混乱和错误。 最糟糕的是#xff0c;情况似乎并没有改善。 一位同事让我意识到JOOX库。 这是解决这些问题的一个很好… Java中的XML库是一个雷区。 操作和读取XML所需的代码量令人震惊使用不同的库遇到类路径问题的风险很大并且命名空间的处理带来了很多混乱和错误。 最糟糕的是情况似乎并没有改善。 一位同事让我意识到JOOX库。 这是解决这些问题的一个很好的尝试。 我发现JOOX有一些缺点这使我想探索替代方法然后自然地我写了自己的库 就像您所做的那样。 我希望该库允许对XML的轻松操作并且在判断不足的情况下我将库命名为EAXY。 这是一个非常糟糕的名字所以我很高兴提出改进建议。 这是我要解决的问题 用Java代码创建相当复杂的XML树应该很容易 使用名称空间应该简单明了。 这是JOOX让我失败的地方 从XML结构中读取值应该很容易。 使用文件结构或类路径中的现有XML文档应该很容易 库应该更喜欢引发异常而不是静默失败。 另外我想通过添加便捷功能来使其更易于处理XHTML。 1.创建一个XML文档 XML文档只是一棵树。 如何将树与Java语法树对齐。 例如假设您要以编程方式想要构建有关本文的一些反馈 Element email Xml.el(message,Xml.el(recipients,Xml.el(recipent,Xml.attr(type, email),Xml.attr(role, To),Xml.text(mailto:johannesbrodwall.com)),Xml.el(recipent, Xml.attr(type, email),Xml.attr(role, Cc),Xml.text(mailto:contactbrodwall.com))),Xml.el(subject, EAXY feedback),Xml.el(contents, I think this is an interesting library)); 每个元素Xml.el都有一个标记名称并且可以嵌套其他元素属性Xml.attr或文本Xml.text。 如果元素仅包含文本则甚至不需要调用Xml.text。 语法经过优化因此如果要在Xml。*上进行静态导入可以编写如下代码 Element email el(message,el(recipients,el(recipent,attr(type, email),attr(role, to),text(mailto:johannesbrodwall.com)),el(recipent,attr(type, email),attr(role, cc),text(mailto:contactbrodwall.com))),el(subject, EAXY feedback),el(content, I think this is an interesting library));2.读取XML 用Java代码读取XML可能是一个挑战。 DOM API使得任何事情都变得极其冗长。 您使用的是XPath但在紧凑方面可能有点过多而且当您做错了什么时结果只是您得到一个空集合或一个空值。 我认为我们可以对此进行改进。 考虑以下 System.out.println(email.find(recipients, recipient).texts()); 我下调XML树结构并获取上一条消息的所有收件人电子邮件地址。 但是等等-运行此代码将返回一个空列表。 EAXY允许我们避免为此挠头 System.out.println(email.find(recipients, recipient).check().texts()); 现在我得到以下异常 org.eaxy.NonMatchingPathException: Cant find {recipient} below [message, recipients].Actual elements: [Element{recipent}, Element{recipent}] 如您所见我们在邮件中拼写了“收件人”。 稍后让我们回到这个问题但是现在让我们解决它以创建有意义的东西 for (Element recipient : email.find(recipients, recipent)) {if (to.equals(recipient.attr(role))) {System.out.println(recipient.text());} } 同样我认为这与Java语法所允许的一样流畅。 3.验证和名称空间 因此我们收到一条消息其中元素名称之一拼写错误。 如果您拥有要使用的XML的XSD文档则可以对此进行验证。 但是您可能已经习惯使用Java XML库时执行此验证的动作完全隐藏在复杂的API后面。 因此我提供了一些帮助 Xml.validatorFromResource(mailmessage.xsd).validate(email); 这将从类路径中读取mailmessage.xsd这对我来说是最常见的用例。 当然大多数架构都不会引用空名称空间中的元素。 使用验证时通常必须在特定的名称空间中构造元素。 在大多数用于处理XML的Java库中很难且容易出错尤其是在混合名称空间时。 我已经将名称空间作为Eaxy库的主要功能 Namespace MSG_NS new Namespace(http://eaxy.org/test/mailmessage, msg); Element email MSG_NS.el(message,MSG_NS.el(recipients,MSG_NS.el(recipient,MSG_NS.attr(type, email),attr(role, cc),text(mailto:contactbrodwall.com)))); 请注意“类型”和“角色”属性属于不同的名称空间-这种情况在其他库中尤其难以实现。 4.模板化 从类路径中读取XSD启发了另一种用法如果我们在类路径中有一个XML文档作为模板然后使用Java代码来操纵该文档该怎么办。 这对于XHTML尤其方便 Document doc Xml.readResource(testdocument.html); Element peopleElement doc.select(#peopleForm);peopleElement.add(el(input,attr(type, text),attr(name, firstName),attr(value, Johannes))); peopleElement.add(el(input, attr(type, text), attr(name, lastName),attr(value, Brodwall))); 此代码从类路径中读取文件testdocument.html选择ID为“ peopleForm”的元素并向其中添加两个输入元素。 5. HTML的便利性 在上面的代码中我们设置了HTML输入元素的类型名称和值属性。 这些是HTML操作中最常用的属性之一。 为了使此操作更容易我向Eaxy添加了一些便捷方法 peopleElement.add(el(input).type(text).name(firstName).val(Johannes)); peopleElement.add(el(input).type(text).name(lastName).val(Brodwall)); 我要优化的最后一种情况是处理HTML中的表单。 这是一些在处理表格之前可以将其发送给用户的代码。 HtmlForm form new HtmlForm(peopleElement); form.set(firstName, Johannes); form.set(lastName, Brodwall);doc.writeTo(req.getWriter()); 在这里我直接设置表单内容。 如果参数名称拼写错误代码将引发异常因此很容易确保正确使用它。 结论 我有五个示例说明如何使用Eaxy轻松完成大多数Java XML库所难以实现的工作使用纯Java代码创建文档树读取和操作XML树的各个部分使用命名空间和验证模板化和处理XHTML文档和表单。 该库现在不稳定但是对于XML库来说不稳定可能不是很危险的情况因为大多数错误在生产前很容易就可以检测到。 我希望您可能会发现尝试在代码中使用此库来处理XML和XHTML操作很有用。 我希望某些用户可以帮助我消除错误并使Eaxy更加易于使用。 哦如果您想出一个更好的名字请告诉我。 参考 宣布EAXY来自我们的JCG合作伙伴 Johannes Brodwall在“ 更大的盒子里思考”博客中的Java中的XML简化。 翻译自: https://www.javacodegeeks.com/2013/11/announcing-eaxy-making-xml-easier-in-java.html
http://www.zqtcl.cn/news/960905/

相关文章:

  • 南通建设局网站分类门户网站系统
  • 合肥网站建设企业秒玩小游戏入口
  • 个人做网站开发个人网站备案取名
  • 替代wordpress 搜索seo优化排名易下拉程序
  • asp.net 网站 方案小程序开发是前端还是后端
  • 网站开发 介绍 回扣建设项目验收在哪个网站公示
  • 建立网站免费如何做物流网站
  • 重庆网站设计费用wordpress自动翻页
  • 燕郊做网站的公司seo快速优化
  • 建了网站却搜不出来设计网站室内
  • 网站运营维护新闻摘抄大全
  • 怎么优化网站的单个关键词排名wordpress 安装百度编辑器
  • led网站建设方案模板做炒作的网站
  • 注册网站免费注册qq邮箱seo服务销售招聘
  • 翻译做网站php做网站好学吗
  • 网站模板 seo响应式网站内容布局
  • 石家庄住房和城乡建设部网站企业自助建站系统怎么建
  • 建设企业网站都需要啥网站开发 自我评价
  • 购物网站主页怎么做网站建设的优势何江
  • 宿州网站建设多少钱广西壮族自治区医保网上服务大厅
  • 宾馆酒店 网站模板wordpress手动获取相关文章
  • 荆州网站开发在线推广网站的方法
  • 可以查企业的网站网站建设的外国文献
  • 什么网站可以做相册视频企业网站开发时间
  • 德州市建设小学网站精品网站建设费用
  • 云主机可以做几个网站wordpress 自动发布
  • python网站开发简单吗小程序开发定制北京公司
  • 做网站什么都不懂 怎么做wordpress10款音乐插件
  • 何使网站的页面结构更为合理建用vs2013做网站案例
  • 帮人做空间网站怎么赚钱静态网站怎么维护