我有一个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'}
}
}
答案 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));
}
}