Tôi có một tệp XML sử dụng các thực thể được khai báo nội bộ. Ví dụ:Cách giải quyết tham chiếu đối tượng XML được khai báo nội bộ bằng cách sử dụng NSXMLParser
<?xml version="1.0" encoding="UTF-8"?>
...
<!ENTITY my_symbol "my symbol value">
...
<my_element>
<my_next_element>foo&my_symbol;bar</my_next_element>
</my_element>
...
Sử dụng lớp NSXMLParser, làm cách nào tôi có thể giải quyết tham chiếu thực thể my_symbol
?
Từ thử nghiệm, phương thức ủy quyền parser:foundInternalEntityDeclarationWithName:value:
sẽ được gọi cho khai báo thực thể my_symbol
, với giá trị "my symbol value"
. Sau đó, khi đạt được thành phần my_next_element
, NSXMLParser
sẽ gọi phương thức ủy nhiệm parser:didStartElement:namespaceURI:qualifiedName:attributes:
.
Trước parser:didEndElement:namespaceURI:qualifiedName:
được gọi là cho </my_next_element>
, phương pháp parser:foundCharacters:
đại biểu sẽ được gọi là hai lần với các dây:
"foo"
"bar"
Tham chiếu my_symbol
thực thể được bỏ qua. Điều gì là cần thiết để tham chiếu thực thể được giải quyết?
EDIT:
Loại bỏ các ENTITY
tuyên bố my_symbol
từ DTD sẽ dẫn đến một NSXMLParserUndeclaredEntityError
. Điều này cho thấy rằng khi khai báo thực thể có mặt, và sau đó được tham chiếu trong <my_next_element>
, nó đang được chú ý. Đối với một số lý do nó chỉ không được giải quyết cho chuỗi nó đại diện.
Ngoài ra, nếu &
được sử dụng trong một phần tử, trình phân tích cú pháp sẽ giải quyết chính xác nó đến "&"
và điều này được chuyển thành chuỗi khi phương thức ủy nhiệm parser:foundCharacters:
được gọi.
Tôi đang gặp sự cố này ngay bây giờ. Bạn đã giải quyết nó? –
bạn có thể tìm thấy nó bằng [XPath] (http://en.wikipedia.org/wiki/XPath) không? –
Tôi đã thực hiện truy vấn XPath trên 'my_element' và cả "foo" và "bar" cũng không được giải quyết. Có đúng để tham chiếu các thực thể được khai báo nội bộ như tôi đã làm không? –