سؤال

أنا أستخدم مكتبة MSXML لتحليل XML

بعد أن أتصل ب put_text ثم get_xml

سيتم تحويل الإخراج إلى <&> &lt; & &gt;

كيف يمكنني التخلص من هذا؟

هل كانت مفيدة؟

المحلول

<و> محظور استخدام داخل النص ويحتاج إلى ترميزه على أنه> و <. الطريقة الوحيدة لتجنب ذلك هي إنشاء قسم CDATA للنص الذي يحتوي على ذلك. لكنك لا تحتاج حقًا إلى إذا كنت تنوي قراءة XMLT باستخدام MS XML - فستكشف هذه الرموز على ما يرام وستحصل على <و> على ما يرام في النص المستخرج.

نصائح أخرى

حسنًا ، أنت تتحول من نص عادي إلى نص مشفر XML.
هذا هو السلوك الذي أتوقعه.

إذا كنت تريد السلسلة الأصلية التي وضعتها في محاولة تحويل مرة أخرى إلى نص باستخدام get_text ().

إذا كنت لا تريد أن يقوم Put_text () بتشفير النص دون ترميز <و> ، فيجب أن يكون داخل قسم CDATA.

<![CDATA[    Text that can include < and > without encoding  ]]>

هل تأخذ &lt أو &lt; ?

يجب أن يكون هناك نصف كولون في النهاية ليكون كيانًا صالحًا.

إذا كنت تريد أن يتم تضمينها كنص ، فمن الجيد أن نهرب. كل XML Pareser سوف يعود الهروب من النص.

إذا كنت تريد ذلك كعناصر XML ، فلن تتمكن من إنشائها باستخدام put_text ولكن تحتاج إلى إنشاء الشجرة بهذه الطريقة

dataNode=xmlDoc.createElement("data")

idNode=xmlDoc.createElement("id")
textNode=xmlDoc.createTextNode("17")
idNode.appendChild(textNode)
nameNode=xmlDoc.createElement("name")
textNode=xmlDoc.createTextNode("Uday")
nameNode.appendChild(textNode)
...

dataNode.appendChild(idNode)
dataNode.appendChild(nameNode)
...

parentNode.appendChild(dataNode)

ما قد يبدو أفضل إذا نظرت مع العين وتريد كتابة النص على الملف الذي يمكنك استخدامه في قسم CDATA.

newCDATA=xmlDoc.createCDATASection("<data><id>17</id>...</data>")
parentNode.appendChild(newCDATA)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top