Tôi đang tạo một ứng dụng Android thực hiện phân tích cú pháp DOM trên một tệp xml. Tôi có một file xml đó trông như thế này:Tại sao có # nút văn bản trong tệp xml của tôi?
<?xml version="1.0" encoding="utf-8"?>
<family>
<grandparent>
<parent1>
<child1>Foo</child1>
<child2>Bar</child2>
</parent1>
<parent2>
<child1>Raz</child1>
<child2>Mataz</child2>
</parent2>
</grandparent>
</family>
Nếu tôi chạy một phân tích cú pháp dom vào nó, như thế này:
try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(input);
doc.getDocumentElement().normalize(); //added in since the edit
NodeList nodd = doc.getElementsByTagName("grandparent");
for (int x = 0; x < nodd.getLength(); x++){
Node node = nodd.item(x);
NodeList nodes = node.getChildNodes();
for(int y = 0; y < nodes.getLength(); y++){
Node n = nodes.item(y);
System.out.println(n.getNodeName());
}
}
}
in Ứng dụng của tôi ra sau
07- 20 18: 24: 28.395: INFO/System.out (491): #text
07-20 18: 24: 28.395: INFO/System.out (491): parent1
07-20 18: 24: 28,395: INFO/System.out (491): #text
07-20 18: 24: 28,395: INFO/System.out (491): parent2
07-20 18: 24: 28.395: INFO/System.out (491): #text
Câu hỏi của tôi là, trường #text nào và quan trọng hơn, làm cách nào để loại bỏ chúng?
Chỉnh sửa: Vì vậy, bây giờ tôi biết chúng là gì, tôi đã cố gắng bình thường hóa nó. Tôi đã cập nhật mã để phản ánh các thay đổi, nhưng kết quả tương tự.
Tôi làm cách nào để kiểm tra? Tôi cho rằng tôi có thể làm một 'getNextSibling()' nhưng tôi có thể dựa vào đó luôn luôn là một '# text' là đứa con đầu tiên? – Otra
Bạn không thể đếm trên #tiếp theo trước tiên, vì có thể có một số sau này. Bạn có ý nghĩa gì khi xóa? Nếu bạn đang thu thập tất cả các nút và xuất chúng ở đâu đó, chỉ cần kiểm tra mỗi nút khi bạn tạo chúng, xem loại của nó và nếu nó là #text VÀ nội dung là tất cả khoảng trắng, chỉ đơn giản là không xuất nó. –
Tôi cho rằng việc xóa là một thuật ngữ xấu, tôi đang chạy bảo đảm rằng sẽ không có văn bản ở đó #text là. Nhưng bạn đã đưa ra chính xác những gì tôi đang tìm kiếm. Tôi có thể chạy một kiểm tra trên getNodeType(). Cảm ơn. – Otra