【问题标题】:find max number of tag inside a tag in xml file在 xml 文件中的标签内查找最大标签数
【发布时间】:2017-02-13 20:39:05
【问题描述】:

我有一个 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>

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

【问题讨论】:

    标签: html xml dom xml-parsing jsoup


    【解决方案1】:

    选择&lt;node&gt; 元素并为每个元素比较其中&lt;tag&gt; 元素的数量。

    示例代码

    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>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-20
        • 2020-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-02
        • 2012-11-04
        • 1970-01-01
        相关资源
        最近更新 更多