gpt4 book ai didi

java - 在 Digester 中定位特定属性 - Java

转载 作者:行者123 更新时间:2023-12-04 06:40:08 28 4
gpt4 key购买 nike

我正在使用 Apache Commons Digester 并尝试在结构中定位要包含在对象中的特定标记。

<parent>

<image size="small">some url</image>

<image size="medium">some url</image>

<image size="large">some url</image>

<image size="huge">some url</image>

</parent>


我真的只想要 medium图像将包含在我的 partent 中对象,但我不确定我会怎么做。
现在我正在使用 digester.addBeanPropertySetter(PathToParent+"/image","image");但这会为每个 image 更新一次标记(应该如此)。
理想情况下,我想要类似 digester.addBeanPropertySetter(PathToParent+"/image/medium","image"); 的东西但你不能那样做。

最佳答案

我省略了通用的 getter/setter。

  public class Parent {

private Image image;

public void setImage(Image image) {
if ("medium".equals(image.getSize())) {
this.image = image;
}
}

}

public class Image {

private String size;
private String url;
}

public static void main(String[] args) throws IOException, SAXException {
String s = "<parent>"
+ "<image size='small'>some url1</image>"
+ "<image size='medium'>some url2</image>"
+ "<image size='large'>some url3</image>"
+ "<image size='huge'>some url4</image>"
+ "</parent>";

Digester digester = new Digester();

digester.addObjectCreate("parent", Parent.class);
digester.addFactoryCreate("parent/image", new ImageCreationFactory());
digester.addBeanPropertySetter("parent/image", "url");
digester.addSetNext("parent/image", "setImage");
Parent p = (Parent) digester.parse(new StringReader(s));
}

public class ImageCreationFactory implements ObjectCreationFactory {

public Object createObject(Attributes attributes) throws Exception {
Image i = new Image();
i.setSize(attributes.getValue("size"));
return i;
}

}

关于java - 在 Digester 中定位特定属性 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357810/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com