gpt4 book ai didi

Java 无法在我的 XML 中获取带有法语口音的 Nodelist

转载 作者:行者123 更新时间:2023-12-01 13:47:47 24 4
gpt4 key购买 nike

我有一个类似这样的具有法语字符的 XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<liste>
<produit code="311" prix="43.00" quantité= "28" />
<produit code="123" prix="39.00" quantité= "10" />
<produit code="456" prix="36.00" quantité= "241" />
</liste>

我的java代码:

import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

public class test2 {
public static void main(String[] args) throws Exception {
System.setOut(new PrintStream(System.out, true, "Cp850"));
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document doc = parser.parse(args[0]);

Element racine = doc.getDocumentElement();
NodeList nl = racine.getElementsByTagName("produit");
}
}

当我尝试使用 javac 编译 java 代码时,出现错误告诉我:与元素类型“produit”关联的属性名称“Quantit╟”必须后跟“=”字符。

如何在节点列表中读取法语单词?谢谢

最佳答案

您的文档似乎没有使用它在标题中声明的字符集。如果 XML 文档编码为 UTF-8,我可以重现您的问题。如果编码为 ISO-8859-1,问题就会消失。请自己尝试一下:

public static void main(String[] args) throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//OutputStreamWriter osw = new OutputStreamWriter(baos, "UTF-8"); // causes described error
OutputStreamWriter osw = new OutputStreamWriter(baos, "ISO-8859-1");
PrintWriter pw = new PrintWriter(osw, true);
pw.println("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
pw.println("<liste>");
pw.println("<produit code='311' prix='43.00' quantité= '28' />");
pw.println("<produit code='123' prix='39.00' quantité= '10' />");
pw.println("<produit code='456' prix='36.00' quantité= '241' />");
pw.println("</liste>");
pw.close();

System.setOut(new PrintStream(System.out, true, "Cp850"));
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document doc = parser.parse(new ByteArrayInputStream(baos.toByteArray()));

Element racine = doc.getDocumentElement();
NodeList nl = racine.getElementsByTagName("produit");
}

您应该使 XML 文档的声明编码与实际编码相匹配。

关于Java 无法在我的 XML 中获取带有法语口音的 Nodelist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20221806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com