java - 对具有任意属性的 HTML 文件的限制

标签 java xml xpath jsoup

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

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

a.级别必须嵌套作为其索引

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

c. level0 必须至少有一个与 level1 相同的元素

d.一个 HTML 元素可能只有一个 level 属性

更新 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>

最佳答案

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

参见What's the best way to validate an XML file against an XSD file?举一个很好的例子。

关于java - 对具有任意属性的 HTML 文件的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39253894/

相关文章:

java - 如何使用 apache poi 更改 docx 的 style.xml 中的字体大小

java - 如何使用tcp发送txt以外的文件格式

android - 完全透明的 Activity ,带有 9 个补丁角图像

android - 在 Android 中滑动时缩小的 Seekbar 按钮(使用自己的拇指 xml)

java - 如何在Selenium Webdriver中找到此webelement?

web-scraping - 试图在谷歌表格中获取加密货币价格数据,而没有像我们 SNX 这样的常见硬币

java - 查询两个独立的数据库。你如何处理两个连接?

java - Multi-Tenancy 应用程序 Java Spring Hibernate Mysql OAuth2 Spring Security

android - 是否可以从底部填充 ListView?

python - 无法使用 scrapy 访问 xpath 属性