سؤال

استلام سلسلة مثل هذا:

<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(); 
}

ربما يجب عليك التحقق من استخدام العدد الإرسالي بأن الفهرس ضمن الحدود.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top