【问题标题】:Restrictions on HTML file with arbitrary attributes对具有任意属性的 HTML 文件的限制
【发布时间】:2016-08-31 15:44:37
【问题描述】:

我有一个 HTML 文件。此文件中的某些元素标有特殊属性:例如 level0="level0 name"、level1="level 1name"、level2="name"。

如何检查此属性是否具有所需的结构?

一个。级别必须嵌套作为它们的索引

b.同一“级别”上的级别名称应该不同

c。 level0 必须至少有一个与 level1 的元素

d。一个 HTML 元素可能只有一个级别属性

更新 1:c.属性为“level0”的html元素必须至少有一个属性为“level1”的降序html元素

更新 2:错误消息易于理解且简单,这一点非常重要。

为了解析 HTML,我使用的是 JSoup,但到目前为止我还处于开放状态。我可以想象使用 XSD-Schema 或 XPath。或者它在Java中的一些组合。我希望向用户显示简单合理的错误消息。

<body>
<div level0="lvl0-0">
  <div>
   ...
  <span level1="lvl1-0"> 
    <p level2="lvl2-0"> text goes here </p>
    <p level2="lvl2-1"> textY goes here </p>
  </span>
  <span level1="lvl1-1"> 
    <p level2="lvl2-0"> text goes here </p>
  </span>
   ...
  <div>
<div>

<div class="bla">    
 <div level0="lvl0-1">
   <span level1="lvl1-0"> 
     <p level2="lvl2-0"> text goes here </p>
   </span>
 <div>
</div>
</body>

【问题讨论】:

  • 用 jsoup 实现这一点应该不是问题。我建议首先设计测试用例,这样您就可以验证解析器/验证器的行为(一种测试驱动的开发)。您在使用 jsoup 时遇到了哪些问题?

标签: java xml xpath jsoup


【解决方案1】:

您应该创建一个 XSD,然后使用 Xerces 之类的东西来验证结构。

请参阅What's the best way to validate an XML file against an XSD file? 了解一个很好的例子。

【讨论】:

  • 感谢您的回答。 XSD 会生成简单的错误消息吗?
  • 据我所知,您不能将 c. level0 must have at least one element with level1(他说的是属性,而不是 xml 元素)等限制放入 xsd。
  • XSD 不会产生任何错误消息。它是元素定义。用于根据 XSD 验证 XML 内容的工具(例如 Xerces)会产生错误。
猜你喜欢
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
相关资源
最近更新 更多