Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无效字符错误-java中的XML格式_Java_Xml_Character - Fatal编程技术网

无效字符错误-java中的XML格式

无效字符错误-java中的XML格式,java,xml,character,Java,Xml,Character,我有一个.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 / Se7

我有一个.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
/
我试图做的是:从
列表L
中读取所有文件,然后将它们写入XML格式。问题是,即使我已经替换了空格字符,我仍然收到了无效的\u CHARACTER\u 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();
    }
}
public void CreeazaRaportXML()
{
尝试
{
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
Document doc=dBuilder.newDocument();
Element rootElement=doc.createElement(“collectiedeFilme”);
doc.appendChild(rootElement);
对于(int i=0;i”+当前);
元素DateFilmCurrent=doc.createElement(当前);
根元素appendChild(dateFilmCurent);
}
}
TransformerFactory TransformerFactory=TransformerFactory.newInstance();
Transformer Transformer=transformerFactory.newTransformer();
DOMSource=新的DOMSource(doc);
StreamResult=newstreamresult(新文件(“C:\\Users\\miTzuliK\\Documents\\NetBeansProjects\\[PA]Tema5Ex1\\RaportXML.xml”);
变换(源、结果);
//输出到控制台进行测试
StreamResult consoleResult=新的StreamResult(System.out);
transformer.transform(源、控制台结果);
}
捕获(例外e)
{
e、 printStackTrace();
}
}
1)我认为这是一种有点错误的方法,因为您使用数据作为标记名。更正确的做法是创建xml结构,如

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

七英镑
...
tt0434409
在这种情况下,您可以控制结构并避免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++) {
    ...
  }
}
for(int i=0;i