Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对具有任意属性的HTML文件的限制_Java_Xml_Xpath_Jsoup - Fatal编程技术网

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

Java 对具有任意属性的HTML文件的限制,java,xml,xpath,jsoup,Java,Xml,Xpath,Jsoup,我有一个HTML文件。此文件中的某些元素用特殊属性标记:例如level0=“level0 name”、level1=“level1 name”、level2=“name” 如何检查此属性是否具有所需的结构 a。级别必须嵌套为其索引 b。同一“级别”上的级别名称应该是不同的 c。level0必须至少有一个level1元素 d。一个HTML元素只能有一个级别属性 更新1:c。属性为“level0”的Html元素必须至少有一个属性为“level1”的降序Html元素 更新2:非常重要的一点是,错误消息

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

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

a。级别必须嵌套为其索引

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

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

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

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

更新2:非常重要的一点是,错误消息要简单易懂

对于解析HTML,我使用的是
JSoup
,但到目前为止,我是开放的。我可以想象使用XSD模式或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>

...

文本位于此处

这里有textY

文本位于此处

...

文本位于此处


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


请参阅以获取一个好的示例。

谢谢您的回答。XSD是否生成简单的错误消息?据我所知,您不能设置限制,例如
c。level0必须在xsd中至少有一个level1的元素(他说的是属性,不是xml元素)。xsd不会产生任何错误消息。这是元素定义。用于根据XSD验证XML内容的工具(例如Xerces)将产生错误。使用jsoup实现这一点应该不是问题。我建议首先设计测试用例,这样您就可以验证解析器/验证器的行为(某种测试驱动开发)。您在使用jsoup时面临哪些问题?