Hãy nói rằng chúng tôi có các tài liệu XML sau:Chuyển đổi QDomElement đến lớp QString/container
<root>
<options>
...
</options>
<children>
<child name="first">12345</child>
<child name="second">
<additionalInfo>abcd</additionalInfo>
</children>
</root>
Tôi muốn để có được một chuỗi đại diện của các nút "trẻ em" và thêm chúng vào một mảng (I don' t muốn mất cú pháp XML như vậy .text() không phải là một tùy chọn). Ví dụ, đứa trẻ đầu tiên sẽ như thế nào:
QString child = "<child name="first">12345</child>";
tôi đã sử dụng đoạn mã sau để có được các yếu tố:
QDomDocument doc;
QDomElement element;
element = xml->documentElement();
if(element.isNull() == false)
{
element = element.firstChildElement("children");
if(element.isNull()) return;
element = element.firstChildElement("child");
while(element.isNull() == false)
{
doc = element.toDocument();
if(doc.isNull() == false)
{
// save string into array
array.append(doc.toString());
}
element = element.nextSiblingElement("child");
}
}
Vấn đề là các doc.isNull trả luôn sai (trông giống như tôi m không thể chuyển đổi phần tử thành tài liệu). Có cách nào để tôi có thể thực hiện điều này không?
Edit:
Tôi muốn thêm QString đó là không bắt buộc ở đây. Về cơ bản bất kỳ lớp nào có thể được sử dụng sau này để lấy dữ liệu là ok (tôi sẽ lưu các nút này và sử dụng chúng để khởi tạo một đối tượng khác sau này). Điều quan trọng là tôi có thể truy cập các giá trị đó ngay cả khi tài liệu gốc đã bị hủy. Ví dụ: có thể lưu trữ trực tiếp các phần tử đó vào một số mảng (ví dụ: QList), có thể được sử dụng để truy cập chúng sau này.
Còn hoạt động ngược lại thì sao? Cho chuỗi tạo ra một QDomNode mà sau này có thể được thêm vào một QDomDocument hiện có? – Pierluigi
@Pierluigi, đó phải là một câu hỏi của chính nó. Nó là khá tham gia. Bạn tạo một 'QDomDocument', sử dụng' setContent() ', sau đó sử dụng' QDomDocumentFragment' để sao chép kết quả trong một tài liệu khác ... –
Nhận xét/* = 4 * không bị đóng. Vì vậy, đây là lỗi cú pháp. –