-1

我从 .xlsx 文件中获取一些字符串(字符串是简单字符)。然后我试图将这些字符串放在一个 .xml 文件中。但不幸的是,当我将这些字符串放在“createElement(StringVariableHere)”方法中时,我收到以下错误:“org.w3c.dom.DOMException: INVALID_CHARACTER_ERR: 指定了无效或非法的 XML 字符。”

我以这种方式获取字符串值:

switch (tempCell.getCellType()) {
    case Cell.CELL_TYPE_STRING:
    String tempColValue = tempCell.getStringCellValue();
}

这是我尝试添加字符串值的行,它给了我错误。

Element titleChild = doc.createElement(StringVariableHere);

我什至尝试使用我在网上找到的以下方法清理字符串:

public String stripNonValidXMLCharacters(String in) {
    StringBuffer out = new StringBuffer(); // Used to hold the output.
    char current; // Used to reference the current character.

    if (in == null || ("".equals(in))) return ""; // vacancy test.
    for (int i = 0; i < in.length(); i++) {
        current = in.charAt(i); // NOTE: No IndexOutOfBoundsException caught here; it should not happen.
        if ((current == 0x9) ||
            (current == 0xA) ||
            (current == 0xD) ||
            ((current >= 0x20) && (current <= 0xD7FF)) ||
            ((current >= 0xE000) && (current <= 0xFFFD)) ||
            ((current >= 0x10000) && (current <= 0x10FFFF)))
            out.append(current);
    }
    return out.toString();
}

另外我正在使用以下内容来检查它是否有效,当我添加我的字符​​串时它返回false:

XMLChar.isValidName(StringVariableHere)

非常感谢大家的时间。斯特凡诺斯。

4

1 回答 1

1

您是否尝试查看您在 java 中得到的字符串?将其打印到控制台等?

它让我想起了我在解析 office 文档时遇到的类似问题。解析器(apache POI)有时会给出破坏 xml 的 unicode 无效字符(一个例子是换行符)。

我不知道您使用的是什么解析器,但您可能必须在尝试填充您的 xml 之前清理您的字符串。

添加详细信息后进行编辑。

你想写什么样的xml?你能举个例子吗?doc.createElement(StringVariableHere) 表示您尝试创建一个名为 StringVariableHere 的元素。IE

<StringVariableHere>there could be something here</StringVariableHere>

不是

<aRandomTag>StringVariableHere</aRandomTag>
于 2012-12-04T22:36:51.077 回答