- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Java 和 SAX 为 Android 设备解析 XML 文件。我从互联网上获取,在解析它时,我得到一个 ExpatException :字符“é”的格式不正确(无效标记)。有没有办法处理这些字符而不必更改 xml 文件中的所有特殊字符?
编辑:这是将文件写入 SD 卡的代码部分。
File SDCardRoot = Environment.getExternalStorageDirectory();
File f = new File(SDCardRoot,"edt.xml");
f.createNewFile();
FileOutputStream fileOutput = new FileOutputStream(f);
InputStream inputStream = urlConnection.getInputStream();
byte[] buffer = new byte[1024];
int bufferLength = 0;
while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
fileOutput.write(buffer, 0, bufferLength);
}
fileOutput.close();
这是我的 xml 的一部分:
这是解析代码:
public class ParserSemaines extends DefaultHandler {
private final String SEMAINE = "span";
private final String DESCRIPTION = "description";
private ArrayList semaines;
private boolean inSemaine;
private Semaine currentSemaine;
private StringBuffer buffer;
@Ghi đè
public void processingInstruction(String target, String data) throws SAXException {
super.processingInstruction(target, data);
}
public ParserSemaines() {
siêu();
}
@Ghi đè
public void startDocument() throws SAXException {
super.startDocument();
semaines = new ArrayList();
}
@Ghi đè
public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException {
buffer = new StringBuffer();
if (localName.equalsIgnoreCase(SEMAINE)){
this.currentSemaine = new Semaine();
this.currentSemaine.setDate(attributes.getValue("date"));
this.inSemaine = true;
}
if(localName.equalsIgnoreCase(DESCRIPTION)){
this.currentSemaine.setDescription(buffer.toString());
}
}
@Ghi đè
public void endElement(String uri, String localName, String name) throws SAXException {
if (localName.equalsIgnoreCase(SEMAINE)){
this.semaines.add(currentSemaine);
this.inSemaine = false;
}
}
public void characters(char[] ch,int start, int length) throws SAXException{
String lecture = new String(ch,start,length);
if(buffer != null) buffer.append(lecture);
}
public ArrayList getData(){
return semaines;
}
}
这是我用来调用解析器的代码:
SAXParserFactory fabrique = SAXParserFactory.newInstance();
SAXParser parseur = null;
ArrayList semaines = null;
thử {
parseur = fabrique.newSAXParser();
DefaultHandler handler = new ParserSemaines();
File f = new File(Environment.getExternalStorageDirectory(),"edt.xml");
parseur.parse(f, handler);
semaines = ((ParserSemaines) handler).getData();
}
询问是否需要任何其他代码部分。
经检查发现SD卡中的xml文件将“é”显示为“�”。这应该是问题所在,但我不知道为什么。我还尝试使用 URI 进行解析,但它不会改变任何内容,我总是遇到相同的异常。
1 Câu trả lời
After check it appears that the xml file in the SDcard shows "é" as "�".
这确实表明存在编码问题。
您发布的代码似乎是从 URL 到文件的正确的逐字节副本,因此该文件应准确表示您从 URL 获取的内容。这意味着服务器的响应可能不是 ISO-8859-1 格式的。
我的下一步是使用 Fiddler 等工具检查整个响应,特别注意:
此外,请验证您在将文件传递给 SAX 解析器之前KHÔNG将其转换为字符串。
<小时>小时>供引用:我编写了一个最小的程序,它连接到 OP 的 URL 并将该连接直接传递到最小的 SAX 解析器。它似乎运行没有错误。我还使用了 DOM 解析器,并验证了至少根元素已被正确解析。
public static void main(String[] argv)
throws Exception
{
URL url = new URL("http://www.disvu.u-bordeaux1.fr/et/edt_etudiants2/Master/Semestre1/g56065.xml");
InputStream in = url.openConnection().getInputStream();
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = spf.newSAXParser();
parser.parse(in, new DefaultHandler());
System.out.println("parse successful");
}
关于java - SAX 处理特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403056/
Tôi đã cố gắng thiết lập luồng UI và trình xử lý cho trình phân tích cú pháp SAX. Đây là trình phân tích cú pháp của tôi mà không triển khai luồng UI và trình xử lý: public class AndroidXMLReader extends ListActiv
Tôi đang cố đọc một tài liệu XML lớn và muốn đọc nó thành từng phần, thay vì sử dụng cách đọc toàn bộ tệp vào bộ nhớ của XmlDocument. Tôi biết tôi có thể sử dụng XmlTextReader để làm điều này, nhưng tôi muốn
Tôi đang cố gắng phân tích 11384 tệp XML thành cơ sở dữ liệu SQLite. Một trong những điều này: ]> 1 2 Tôi đang sử dụng trình phân tích cú pháp SAX: pub
Tôi cần phân tích cú pháp một tệp XML bằng Perl. Các phần của tệp được lưu trữ riêng biệt và được chèn vào dưới dạng các thực thể hệ thống. Tuy nhiên, vấn đề này rất phổ biến. Nhưng tôi không thể tìm được thông tin nào để giải quyết vấn đề đó. ]> &externalContent; Khi sử dụng
Tôi đang cố gắng phân tích định nghĩa tin nhắn HL7 từ xsd. Tôi chia định nghĩa lược đồ thành hai tệp. Tệp đầu tiên chứa định nghĩa tin nhắn thực tế, tệp thứ hai chứa định nghĩa phân đoạn trong tin nhắn. Tôi đang cố gắng điều chỉnh mã mẫu để phân tích cú pháp XML từ đây https://gis
Tôi đang sử dụng SAX để phân tích biểu thức MathML (mặc dù thực tế là nó là MathML có lẽ không hoàn toàn liên quan). Ví dụ chuỗi đầu vào là λ. Để SAX giải quyết
Tôi đang cố gắng phân tích cú pháp một tệp XML bằng Java và SAX cho thiết bị Android. Tôi lấy thông tin này từ Internet và khi phân tích, tôi nhận được lỗi ExpatException: Ký tự 'é' không đúng định dạng (mã thông báo không hợp lệ). Có bất kỳ
Tôi đang cố gắng đọc một tệp xml bằng sax trong java. Tôi chỉ nhận được kết quả đầu ra cho endElement nhưng không hiểu lỗi ở startElement. Đây là trình xử lý của tôi: public class XMLHan
Tôi đang sử dụng trình phân tích cú pháp SAX để phân tích cú pháp XML có thẻ cha và thẻ con như thế này:
Tôi đang cố gắng trích xuất dữ liệu từ nguồn cấp dữ liệu RSS. Liên kết RSS - http://www.thehindu.com/sport/?service=rss ? Đây là phương thức ký tự của trình xử lý mặc định của tôi. công chúng vo
Tôi đã thử thực thi đoạn mã sau nhưng trình phân tích cú pháp SAX của tôi không gọi phương thức startElement. Dưới đây là mã của tôi: package getTableStructure; import java.util.Lis
Tôi đang thực hiện một yêu cầu trong đó tôi cần phải chia nhỏ một tệp XML lớn và xử lý thêm. Đây là ví dụ về XML có thể chuyển thành một dòng duy nhất. Yongjin Đây là mã của tôi: import java.util.Arrays; import java
Tôi đang cố gắng đưa nội dung của một thẻ vào một biến trong trình phân tích cú pháp Java Sax của mình. Tuy nhiên, phương thức Characters chỉ trả về một mảng Char. Có cách nào để chuyển đổi mảng Char sang Int không? ? ? công khai void c
Tôi có đoạn mã sau đây.. System.setProperty("http.proxyHost","176.6.129.25") ;
Cách sử dụng SAX để hiển thị tên của nút ở độ sâu tối đa trong cây. Thuật toán hoạt động tốt để tôi hiểu khái niệm. Ví dụ, tôi nên sử dụng StartElement, EndElement, StartDocument, EndDocument như thế nào
Có cách khả thi nào để tìm thẻ XML tương ứng bằng cách sử dụng lớp xử lý mặc định không? Ví dụ... 1 1 Tôi muốn sử dụng các phương thức startElement() và endElement()
Tôi muốn sử dụng trình phân tích cú pháp SAX để phân tích một số dữ liệu từ tệp xml. XML của tôi như sau: Pies & past Fruits Để phân tích dữ liệu này, tôi đã mở rộng DefaultHandler. Đầu ra đã phân tích
Tôi đang xây dựng một quy trình tạo XML (từ nhiều nguồn khác nhau và cho nhiều mục đích khác nhau mà tôi không biết trước) và tôi muốn đưa XML đã tạo trực tiếp vào quy trình xử lý XML chuẩn như SAX, StAX và DOM. Tôi đã làm điều đó
Tôi có một tệp XML được tạo bởi MS Excel chứa các thành phần sau: 22. Department"GS "NAES "ABCDEF"
Tôi đang gặp sự cố khi mở tệp XML dump của stackoverflow bằng trình phân tích cú pháp java sax. Nó nhận ra phần cuối của mỗi phần tử, nhưng có vẻ như bỏ qua phương thức startElement. Tôi sử dụng mã mẫu: thử {
Tôi là một lập trình viên xuất sắc, rất giỏi!