当前位置: 首页 > 知识库问答 >
问题:

如何在Web服务中读取XML文件

郎魁
2023-03-14

我需要创建将在两种语言之间翻译一些单词的WEB服务,所以我创建了一个接口:

 @WebService
public interface Translator {
    @WebMethod
    String translate(String word, String originalLanguage, String targetLanguage);
}
@WebService(endpointInterface = "source.Translator")
public class TranslatorImpl implements Translator{

    @Override
    public String translate(String word, String originalLanguage, String targetLanguage) {


        return word + originalLanguage +" butterfly " + targetLanguage + " baboska ";
    }

}

共有1个答案

尉迟正平
2023-03-14

我想您的问题是“我在这个WebMethod中解析XML文件吗?”与webservices没有多大关系,但与软件设计和体系结构有很大关系。遵循“单一职责”原则,您应该在另一个类中处理XML。

关于xml文件的读取,这里有很多问题都有很好的答案,例如Java读取xml文件。

顺便问一下:你想过使用数据库吗?在添加新的翻译时,它比XML文件更灵活,并且在处理可能被更改的数据时(在将来添加许多新条目),它被视为最佳实践。

public class XmlDataSource {

    public String getTranslation(String original) throws Exception {
        Document d = readData();
        XPathFactory xPathfactory = XPathFactory.newInstance();
        XPath xpath = xPathfactory.newXPath();
        XPathExpression expr = xpath.compile("/dictionary/entry/translation[../original/text() = '" + original + "']");
        String translated = (String) expr.evaluate(d, XPathConstants.STRING);
        return translated;
    }

    private Document readData() throws Exception {
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        File datafile = new File("your/path/to/translations.xml");
        return documentBuilder.parse(new FileInputStream(datafile));
    }
}

示例中的xpath依赖于如下结构:

<?xml version="1.0" encoding="UTF-8"?>
<dictionary>
    <entry>
        <original>butterfly</original>
        <translation>Schmetterling</translation>
    </entry>
    <entry>
        <original>flower</original>
        <translation>Blume</translation>
    </entry>
    <entry>
        <original>tree</original>
        <translation>Baum</translation>
    </entry>
</dictionary>

然后您可以调用webservice中的datasource来翻译所请求的单词:

@Override
    public String translate(String word, String originalLanguage, String targetLanguage) {
        XmlDataSource dataSource = new XmlDataSource();
        return dataSource.getTranslation(word);
    }
 类似资料:
  • 问题内容: 我努力了: 找到错误消息: 另外,我尝试使用并得到了相同的错误消息,甚至使用beanshell脚本也是如此: 问题答案: 尝试以下方法: 将Beanshell Sampler添加到您的测试计划 将以下代码放入采样器的“脚本”区域: 将调试采样器和查看结果树侦听器添加到您的测试计划 运行测试 确保Beanshell Sampler为绿色并且已设置变量。如果不是,请查看 jmeter.lo

  • 问题内容: 我想知道使用node.js消费SOAP XML Web服务的最佳方法是什么 谢谢! 问题答案: 您没有太多选择。 您可能需要使用以下之一: node-soap) strong-soap(重写) easysoap

  • 如何在reactor netty服务器中读取请求正文?我想让请求主体确定响应的内容,但在示例代码中找不到这样的示例。 例外 block()/blockFirst()/blockLast()正在阻塞,这在线程reactor-http-nio-2中不受支持 调用者 卷曲http://127.0.0.1:45441/test1/test-d“12312321312”-i-H“内容类型:应用程序/json

  • 问题内容: EMF = Eclipse建模框架 我必须在一个课堂项目中使用EMF。我正在尝试了解如何使用EMF执行以下操作: 读取XML, 将值放入对象。 使用ORM将对象中的值持久保存到数据库中。-完成 使用ORM从数据库获取数据并生成XML。 我需要使用EMF(不知道是什么)和JPA(完成)来完成所有这些操作。 我使用过JAXB,我知道,可以使用JAXB完成,但是(EMF == JAXB)怎么

  • 本文向大家介绍java如何解析/读取xml文件,包括了java如何解析/读取xml文件的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java解析/读取xml文件的方法,供大家参考,具体内容如下 XML文件 Java 代码: 以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 问题内容: 我需要使用Java读取XML文件。它的内容就像 是否有特殊的阅读器/ JAR,还是应该使用 FileInputStream进行 阅读? 问题答案: 另一个建议:尝试使用Commons消化器。这使您可以使用基于规则的方法非常快速地开发解析代码。有一个教程在这里和图书馆可在这里 我也同意Brian和Alzoid的观点,因为JAXB非常适合快速启动和运行。您可以使用JDK附带的xjc绑定编译