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

设置xml编码

田兴怀
2023-03-14

我将xml发送到web服务,并在那里将输入xml转换为字符串,现在设置其编码时遇到问题。下面是一个代码:

        Element soapinElement = (Element) streams.getSoapin().getValue().getAny();          
        Node node = (Node) soapinElement;
        Document document = node.getOwnerDocument();
        DOMImplementationLS domImplLS = (DOMImplementationLS) document.getImplementation();         
        LSSerializer serializer = domImplLS.createLSSerializer();
        LSOutput output = domImplLS.createLSOutput();
        output.setEncoding("UTF-8");
        Writer stringWriter = new StringWriter();
        output.setCharacterStream(stringWriter);
        serializer.write(document, output);    
        String soapinString = stringWriter.toString();

这段代码从请求xml生成一个String。问题是,当请求XML不是以UTF-8编码时,它会在xml元素中产生不可读的字符:

<some element>РћР’Р” Р’РћР</some element>

当我发送UTF-8编码的xml时,没有问题。因此,问题是如何在将xml转换为字符串时设置UTF-8编码。

JVM使用的默认编码是ISO8859-1。

共有2个答案

欧阳炜
2023-03-14

如果我是你,我会重新思考我的整个方法,通常XML应该作为一棵树来保存。

但如果你真的需要一根绳子试试这个

    final StringWriter sw = new StringWriter();
    try {
        TransformerFactory.newInstance().newTransformer().transform(
                new DOMSource(document),
                new StreamResult(sw)
        );
    } catch (TransformerException e) {
        throw new RuntimeException(e);
    }

    // Now you have the XML as a String:
    System.out.println(sw.toString());
明松
2023-03-14

方法表示编码实际上是什么,而不是您希望它是什么。XML库不会转换字符。

请看这个问题:XML编码的意义

如果你想转换编码,那是另一个问题。

 类似资料:
  • 在本章中,我们将学习如何更改XML DOM对象中节点的值。 节点值可以更改(或设置)如下 - 如果是类型,那么变量将是属性的值; 如果是类型,则它将是文本内容; 如果是类型,则它将为。 以下部分将演示每种节点类型(,和类型)的节点值设置。 以下所有示例中使用的如下所示 - 1. 更改 Text 节点的值 当元素的更改值时,需要编辑元素的文本内容(也称为文本节点)。 以下示例演示如何更改元素的节点。

  • 问题内容: 我是mySql的新手。我正在尝试替换表的xml列中的值。 我的选择方法有效。 我的替换方法没有。我一直在寻找正确的语法… 一些背景: 当我删除漫画页面时会出现这种情况。 它在页码上留下了空白,之后我要么: 遍历所有漫画,并消除页码中的任何空白。 或者 遍历pageNumber大于已删除页面的所有漫画,并将其pageNumber减小1。 问题答案: 怎么样

  • 我使用jibx库生成xsd到Java的代码,我也使用Ant创建了jar文件。在这里我们需要设置xmlschemalocation,以便在如下所示执行marshalmessage时,可以获得xsd位置。 //这用于创建对象 生成的xml O/P是?xml version=“1.0”encoding=“UTF-8”?>/DeviceCapability xmlns=“http://zigbee.org

  • 问题内容: 用Java编写时,以下内容: 添加属性的顺序不保留在结果XML文件中。 我如何控制XML元素内属性的顺序(这样,人类将很容易阅读…)? 问题答案: 根据DOM标准,属性节点没有定义的顺序: 实现NamedNodeMap接口的对象用于表示可以按名称访问的节点的集合。请注意,NamedNodeMap不会从NodeList继承。NamedNodeMaps不会以任何特定顺序维护。 包含在实现N

  • 您的代码编辑器是您主要的开发工具;你使用它来编写和保存代码。通过学习编辑器的快捷方式和安装主要的插件,可以使你更好,更快编写代码。 TL;DR 选择一个编辑器,您可以自定义快捷方式,并有许多插件可以帮助您更好,更快编写代码。 使用包管理器,以便使你更容易发现,安装和更新插件。 安装有助于提高开发效率的插件;使用本指南中的建议。 安装 Sublime text 编辑器 Sublime是一个伟大的编辑

  • 主要内容:XML 编码错误,Windows 记事本,结论XML 文档可以包含非 ASCII 字符,比如挪威语 æ ø å,或者法语 ê è é。 为了避免错误,需要规定 XML 编码,或者将 XML 文件存为 Unicode。 XML 编码错误 如果您载入一个 XML 文档,您可以得到两个不同的错误,表示编码问题: 在文本内容中发现无效字符。 如果您的 XML 中包含非 ASCII 字符,且文件保存为没有指定编码的单字节 ANSI(或 ASCII),您