在xml文件中查找标记内的最大标记数

时间:2016-10-05 11:57:29

标签: html xml dom xml-parsing jsoup

我有xml页面,我想找到哪个标签包含大多数标签我如何得到我粘贴下面的xml文件数据

<node id="46547591" lat="30.852474" lon="75.8634368" version="1"> 
<tag k="created_by" v="JOSM" /> 
</node>
<node id="46547602" lat="30.8525738" lon="75.8634929" version="1"> 
<tag k="created_by" v="JOSM" /> 
</node>
<node id="46547607" lat="30.8525862" lon="75.8640606" version="1"> 
<tag k="created_by" v="JOSM" /> 
</node>
<node id="46547616" lat="30.8532422" lon="75.8640407" version="1"> 
<tag k="name" v="Tathgar Jathere" /> 
<tag k="amenity" v="place_of_worship" /> 
<tag k="religion" v="sikh" /> 
<tag k="denomination" v="Devotees of Baba Namdev" /> 
</node>

正如您可以看到上面的数据,标签的最大数量是最后一个节点标签,我想计算标签的数量。 请尽快帮助我

2 个答案:

答案 0 :(得分:2)

选择<node>元素,并为每个元素比较其中<tag>个元素的数量。

示例代码

String htmlString = "<node id=\"46547591\" lat=\"30.852474\" lon=\"75.8634368\" version=\"1\"> \r\n" + 
        "<tag k=\"created_by\" v=\"JOSM\" /> \r\n" + 
        "</node>\r\n" + 
        "<node id=\"46547602\" lat=\"30.8525738\" lon=\"75.8634929\" version=\"1\"> \r\n" + 
        "<tag k=\"created_by\" v=\"JOSM\" /> \r\n" + 
        "</node>\r\n" + 
        "<node id=\"46547607\" lat=\"30.8525862\" lon=\"75.8640606\" version=\"1\"> \r\n" + 
        "<tag k=\"created_by\" v=\"JOSM\" /> \r\n" + 
        "</node>\r\n" + 
        "<node id=\"46547616\" lat=\"30.8532422\" lon=\"75.8640407\" version=\"1\"> \r\n" + 
        "<tag k=\"name\" v=\"Tathgar Jathere\" /> \r\n" + 
        "<tag k=\"amenity\" v=\"place_of_worship\" /> \r\n" + 
        "<tag k=\"religion\" v=\"sikh\" /> \r\n" + 
        "<tag k=\"denomination\" v=\"Devotees of Baba Namdev\" /> \r\n" + 
        "</node>";
Document doc = Jsoup.parse(htmlString);

Element maxTags=null;

for (Element node : doc.select("node")) {
    Elements tagElements = node.select("tag");
    if(tagElements.size()>0){
        maxTags = maxTags==null || maxTags.select("tag").size()<tagElements.size() ? node : maxTags;
    }
}

System.out.println("Maximum number of tags in a node: " + maxTags.select("tag").size());
System.out.println("Node with maximum number of tags:\n\t" + maxTags.toString().replace("\n", "\n\t"));

<强>输出

Maximum number of tags in a node: 4
Node with maximum number of tags:
    <node id="46547616" lat="30.8532422" lon="75.8640407" version="1"> 
     <tag k="name" v="Tathgar Jathere" /> 
     <tag k="amenity" v="place_of_worship" /> 
     <tag k="religion" v="sikh" /> 
     <tag k="denomination" v="Devotees of Baba Namdev" /> 
    </node>

答案 1 :(得分:0)

文档的最外层元素(“文档元素”)将始终包含比任何其他元素更多的标记。