مشكلة في إنشاء كائن Xelement مع مساحة اسم GML
-
27-09-2019 - |
سؤال
أحاول بناء ملف XML وثيقة باستخدام GML مساحة الاسم و XML إلى LINQ.
هدفي هو XElement
مع محتويات مثل هذا:
<gml:name>...</gml:name>
لكني أحصل على ما يلي:
<name xmlns="http://www.opengis.net/gml" />
المشكلة هي أن gml:
مفقود من العنصر. لماذا هذا؟
قانون بلدي على النحو التالي:
XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name");
المحلول
بادئ ذي بدء هذا XML
<name xmlns="http://www.opengis.net/gml" />
يعادل هذا XML
<gml:name xmlns:gml="http://opengis.net/gml" />
ويجب على جميع مستهلكي XML التعامل معها على أنها نفسها. ومع ذلك ، يمكنك تحقيق الناتج الثاني مثل هذا:
XNamespace nsGML = "http://www.opengis.net/gml";
XElement item = new XElement(nsGML + "name",
new XAttribute(XNamespace.Xmlns + "gml", nsGML.NamespaceName));
إذا لم تحدد سمة إعلان مساحة الاسم LINQ إلى XML ، فستقوم باختيار بادئة تلقائيًا لك (في هذه الحالة ، تستخدم واحدة فارغة). إذا كنت ترغب في إجبار استخدام بادئة محددة ، فيجب عليك توفير سمة إعلان مساحة الاسم.
لا تنتمي إلى StackOverflow