كيف تحصل على قيم العقد الفرعية مع QdomDocument؟
سؤال
استلام سلسلة مثل هذا:
<invoke name="CanClose" returntype="xml">
<arguments>
<string># 998.40</string>
<number>49920</number>
</arguments>
</invoke>
أود استخدام QDomDocument
للحصول على قيم الوسائط "العقد الفرعية من خلال فهرسها (أود استخراج الأوتار"# 998.40 "و" 49920 "في المثال).
هذا ما جربته:
QString argument(int index)
{
QDomNode arg = xml->elementsByTagName("arguments").at(index);
return arg.nodeValue();
}
لكن حتى arg
كان فارغا. ماذا أفعل خطأ هنا؟
شكرا مقدما.
المحلول
يبدو أن النص داخل العقدة هو عقدة نفسها أيضًا. هذه هي الطريقة التي يعمل بها:
QString argument(int index)
{
QDomNode arg = xml->firstChild().namedItem("arguments");
return arg.childNodes().at(index).firstChild().nodeValue();
}
نصائح أخرى
ElementsByTagName () إرجاع قائمة بجميع العقد (العناصر في الواقع) مع اسم العلامة "وسيطات" في العقد الفرعية. . في () يعيد أحد عناصر "الحجج" من القائمة ، وليس أطفالهم. إذا كنت تريد الأطفال ، فأنت بحاجة إلى التكرار على أطفالهم ().
تقوم هذه الوظيفة بإرجاع قائمة QDOMNODERN
من هذا أود أن أقول إن الرمز ربما يجب أن يكون
http://doc.trolltech.com/3.3/qdomdocument.html#elementsbytagname
http://doc.trolltech.com/3.3/qdomnodelist.html#item
QString argument(int index)
{
QDomNode arg = xml->elementsByTagName("arguments").item(index);
return arg.nodeValue();
}
ربما يجب عليك التحقق من استخدام العدد الإرسالي بأن الفهرس ضمن الحدود.