使用XML Filter,如何区分同一个Xpath中的两个相同文本?

时间:2015-10-07 08:16:24

标签: xml excel api xpath

我正在使用Webservice并过滤XML。这是输出的外观(以XML格式):

扫描细节()

package com.company.data.render.model
@RestController
public class ControllerClass {

@Autowired
ApplicationPropertiesServiceImpl services;

@RequestMapping(value = "/node1", method = RequestMethod.GET)
@ResponseBody
public ParentNode getNode1() 
{


    Child node = new Child();
    List<Map<String, Object>> properties properties = services.getData("A",xxx);
    node.addtree();
    node.setProperties(properties);
    return node;
}
 }   -------------------------------------------------------------------------------

package com.company.data.service;
@Component
public List<Map<String, Object>> getData(String type,String name) 
{
        if(type.equalsIgnoreCase("A"))
        {
            String sql = "select * from data.data_properties(?)";
            List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql,host);
            return rows;
        }else if(properties.equalsIgnoreCase("B"))
        {
            String sql = "select * from data.application_properties(?)";
            List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql,host);
            return rows;
        }

}

-------------------------------------------------------------------------------
package com.company.data.render.model;

@Component
public class Child {

@Autowired
ApplicationPropertiesServiceImpl services;


public void addtree()
{
List<Map<String, Object>> properties=services.getData("B", "xxy");

}
}

我想根据状态类型区分两次扫描。

(编辑:这是完整的API输出) 1-我想从XML过滤状态。因为有很多状态无法过滤当前状态,这是第一位的。 2-基于说明我想从XML获取数据。

  Scan 
  Status type - UD
  Time

  Scan
  Status type - DL
  Time

1 个答案:

答案 0 :(得分:0)

鉴于上面的XML - 无法完成,因为您的两个元素是相同的。

如果我们假设不同的'ScanType'元素是xpath:

//ScanDetail/ScanType[string()=~/UD/]/..

使用我的xpath引擎(使用XML::Twigperl)。

这应该这样做,但我没有测试过它:

//ScanDetail[ScanType = 'UD'] 

(参考:XPath to select element based on childs child value