【问题标题】:Invalid Character Error - XML format in java无效字符错误 - java 中的 XML 格式
【发布时间】:2015-04-03 21:43:53
【问题描述】:

我有一个 .txt 文件:

Seven Pounds
Drama
13 martie 2009
8
tt0814314
/
Source Code
Mystery SF Thriller
1 aprilie 2011
8
tt0945513
/
V for Vendetta
Action Drama Thriller
16 martie 2006
8
tt0434409
/
Braveheart
Action Biography Drama
24 mai 1995
9
tt0112573
/
Se7en
Drama Mystery Thriller
22 septembrie 1995
9
tt0114369
/

我正在尝试执行以下操作:从 List<List<String>> L 中的文件中读取所有内容,然后将它们写入 XML 格式。问题是我收到了 INVALID_CHARACTER_ERR 消息,即使我已经替换了空格字符。错误信息是这样的:

org.w3c.dom.DOMException: INVALID_CHARACTER_ERR: An invalid or illegal XML              character is specified. 
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createElement(CoreDocumentImpl.java:622)
at pa.tema5ex1.Tree.CreeazaRaportXML(Tree.java:246)
at pa.tema5ex1.PATema5Ex1.main(PATema5Ex1.java:22)

我现在一直在做的代码如下:

public void CreeazaRaportXML()
{
    try
    {
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.newDocument();


        Element rootElement = doc.createElement("ColectieDeFilme");
        doc.appendChild(rootElement);

        for (int i = 0; i < colectieFilme.size(); i++)
        {
            for (int j = 0; j < colectieFilme.size(); j++)
            {
                String current = colectieFilme.get(i).get(j).replaceAll(" ", "").replace("\n", "");
                System.out.println("current -> " + current);
                Element dateFilmCurent = doc.createElement(current);
                rootElement.appendChild(dateFilmCurent);     
            }

        }

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new File("C:\\Users\\miTzuliK\\Documents\\NetBeansProjects\\[PA]Tema5Ex1\\RaportXML.xml"));
        transformer.transform(source, result);
        // Output to console for testing
        StreamResult consoleResult = new StreamResult(System.out);
        transformer.transform(source, consoleResult);
    }

    catch (Exception e) 
    {
        e.printStackTrace();
    }
}

【问题讨论】:

    标签: java xml character


    【解决方案1】:

    1) 我认为这是一种错误的方法,因为您使用数据作为标签名称。创建像这样的xml结构会更正确

    <film>
      <name>Seven Pounds</name>
      ...
      <id>tt0434409</id>
    </film>
    

    在这种情况下,您可以控制结构并避免 XML 标记名称中出现意外的不允许字符

    2) 如果你仍然想使用当前的方法尝试修剪字符串 st 结尾,可能有特定的行分隔符。

    3) 第二个 for 循环的用法可能不正确。您在初始列表上按大小迭代,如果错误。想想应该是这样的

    for (int i = 0; i < colectieFilme.size(); i++) {
      List<String> filmStrings = colectieFilme.get(i);
      for (int j = 0; j < filmStrings.size(); j++) {
        ...
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      相关资源
      最近更新 更多