gpt4 book ai didi

java - 使用 Java 中的 Web 服务检索 XML 数据

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:10 25 4
gpt4 key购买 nike

我需要一些有关必须从 XML 文件检索和检查有效元素的 Web 服务的帮助。 Web 服务方法应该如下所示 - 翻译(“花”,“英语”,“俄语”),并且客户端应该能够允许您输入所需的单词、原始语言和目标语言。如果这些存在于 XML 文件中,则其翻译将显示在客户端上,如果不存在,则会显示错误消息。

我创建了一个标准的 Web 服务方法 - add(int a, int b) 并使用普通的 java 应用程序创建了客户端部分,添加了 swing GUI,与 wsdl 链接连接,并且该方法运行良好。我怎样才能让这个计划发挥作用?请指教。

该服务如下所示:

@WebMethod(operationName = "translate")
public String translate(@WebParam(name = "word") String word,
@WebParam(name = "originalLanguage") String originalLanguage,
@WebParam(name = "targetLanguage") String targetLanguage)
throws Exception {

XMLSource dataLSource = new XMLSource();
return dataLSource.getTranslation(word);

}

考虑到 XML 文件应如下所示:translation.xml

<?xml version="1.0" encoding="UTF-8"?>
<translation>
<word>
<english>car</english>
<russian>avtomobil</russian>
</word>
<word>
<english>flower</english>
<russian>tsvetok</russian>
</word>
<word>
<english>butterfly</english>
<russian>babochka</russian>
</word>
</translation>

还有 XML 源类:

public class XMLSource {

private Document readData() throws Exception{

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
File xmlFile = new File("translation.xml");
return db.parse(new FileInputStream(xmlFile));

}

public String getTranslation(String original) throws Exception{

Document doc = readData();
XPathFactory xpf = XPathFactory.newInstance();
XPath xp = xpf.newXPath();
XPathExpression xpe = xp.compile("/translation/word/russian[../english"
+ "/text()='"+original+"'] ");
String translated = (String) xpe.evaluate(doc, XPathConstants.STRING);
return translated;

}
}

客户端GUI sample of the program

最佳答案

您可以以此为起点并进行修改以满足您的需要。这意味着您需要使用 InputSource 对象加载文件,然后使用 XPath 从 XML 文件中提取数据。网络上有大量关于如何执行此操作的示例和教程。以下片段来自 Simplest way to query XML in Java

String xml = "<resp><status>good</status><msg>hi</msg></resp>";

XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();

InputSource source = new InputSource(new StringReader(
xml));
String status = xpath.evaluate("/resp/status", source);

System.out.println("satus=" + status);

关于java - 使用 Java 中的 Web 服务检索 XML 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39569892/

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