从XML过滤的JSON

时间:2015-02-16 05:02:59

标签: xml json filtering

我有一个XML文件,如下所示。

<animals> <dog> <name>Rufus</name> <breed>labrador</breed> </dog> <dog> <name>Marty</name> <breed>whippet</breed> </dog> <cat name="Matilda"/> </animals>

我需要输出为过滤后的JSON。 我用Jackson Library将XML转换为JSON。

 {    
        animals:{ 
             dog:[{name:'Rufus',breed:'Labrador'},
                 {name:'Marty',breed:'whippet'}],
             cat:{name:'Matilda'}
        }
    }

但我需要一个带有选定节点的格式化输出。 是否有一些罐子需要过滤器。 如果给出排除过滤器

animals.dog=true

我得到如下的输出

{    
        animals:{ 
                     cat:{name:'Matilda'}
                }
}

1 个答案:

答案 0 :(得分:0)

我知道这不是确切的情况,因为我只是在这里使用一个类而不是XML,但它可以为您提供所需的过滤节点:

public class Answer28534834 {

public static class Animal
{
    private ArrayList<Dog> dogs;
    private ArrayList<Cat> cats;

    public Animal()
    {
        dogs = new ArrayList<Dog>();
        cats = new ArrayList<Cat>();
    }

    public void addDog(Dog dog)
    {
        dogs.add(dog);
    }

    public ArrayList<Dog> getDogs()
    {
        return dogs;
    }

    public void addCat(Cat cat)
    {
        cats.add(cat);
    }

    public ArrayList<Cat> getCats()
    {
        return cats;
    }
}

public static class Dog
{
    String name;
    String breed;

    public Dog(String name, String breed)
    {
        this.name = name;
    }

    public String getName()
    {
        return name;
    }

    public String getBreed()
    {
        return breed;
    }       
}

public static class Cat
{
    String name;

    public Cat(String name)
    {
        this.name = name;
    }

    public String getName()
    {
        return name;
    }
}

public static class Example {
    private String fieldA;
    private String fieldB;
    private String fieldC;

    public Example(String a, String b, String c) 
    {
        this.fieldA = a;
        this.fieldB = b;
        this.fieldC = c;
    }

    public String getFieldA() {
        return fieldA;
    }

    public String getFieldB() {
        return fieldB;
    }

    public String getFieldC() {
        return fieldC;
    }
}

public static void main(String [] args) throws Exception
{
    ObjectMapper mapper = new ObjectMapper();

    Animal animalList = new Animal();
    animalList.addDog(new Dog("Rufus", "Labrador"));
    animalList.addDog(new Dog("Marty", "Whippet"));
    animalList.addCat(new Cat("Matilda"));

    JsonNode node = mapper.convertValue(animalList, JsonNode.class);

    if (node.isObject()) 
    {
        for (Iterator<Entry<String, JsonNode>> it = node.fields(); it.hasNext(); ) 
        {
            Map.Entry<String, JsonNode> field = it.next();
            String key = field.getKey();

            if (!"cats".equals(key)) 
            { 
                it.remove();
            }
        }
    }

    System.out.println(mapper.writeValueAsString(node));
}       

}