gpt4 book ai didi

java - 获取xml数据

转载 作者:搜寻专家 更新时间:2023-11-01 03:54:11 25 4
gpt4 key购买 nike

我正在尝试实现工厂模式以从服务器获取 XML 文档。(使用 javax.xml.parsers.DocumentBuilder)

我现在有以下类(class),你能给点意见吗?该结构对这种模式有意义吗? (我在 codereview 上问了同样的问题,但是,如果还没有任何反馈的话)

DocumentGeneratorFactory(抽象工厂)

public interface DocumentGeneratorFactory {

public Document createDocument(String scheme, String authority,
String path, HashMap<String, String> parameters)
throws ParserConfigurationException, SAXException, IOException;

}

ProductDocumentGeneratorFactory(创建工厂)

public class ProductDocumentGeneratorFactory implements
DocumentGeneratorFactory {

public Document createDocument(String scheme, String authority,
String path, HashMap<String, String> parameters)
throws ParserConfigurationException, SAXException, IOException {

Uri.Builder uri = new Uri.Builder();
uri.scheme(scheme);
uri.authority(authority);
uri.path(path);

Set<Map.Entry<String, String>> set = parameters.entrySet();

for (Map.Entry<String, String> params : set) {
uri.appendQueryParameter(params.getKey(), params.getValue());
}

URL url = new URL(uri.toString());

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();

return doc;
}

}

请求(抽象产品)

public abstract class Request {
Document doc;
HashMap<String, String> queryStrings;

abstract void prepareRequest() throws ParserConfigurationException, SAXException, IOException;

}

ProductRequest(产品)

public class ProductRequest extends Request{
ProductDocumentGeneratorFactory DocumentGeneratorFactory;
HashMap<String, String> queryStrings;

public ProductRequest(ProductDocumentGeneratorFactory DocumentGeneratorFactory,HashMap<String, String> queryStrings){

this.DocumentGeneratorFactory = DocumentGeneratorFactory;
this.queryStrings = queryStrings;
}

@Override
void prepareRequest() throws ParserConfigurationException, SAXException, IOException {
doc = this.DocumentGeneratorFactory.createDocument("http", "ip-address", "default.aspx",this.queryStrings);
}

}

最佳答案

这没有意义,因为具体工厂必须返回它们创建的对象,但您使用的是内置 Java DocumentBuilder db = dbf.newDocumentBuilder();,因此无论怎样,它都会返回相同的对象什么。

如果 ProductDocumentGeneratorFactory 以某种方式返回 ProductDocument 类型的对象,那将是有意义的。

Example of Abstract Factory Pattern

所以在你的情况下,我认为这种模式没有意义。

关于java - 获取xml数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13641583/

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