سؤال

أحاول بناء ملف 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 ، فستقوم باختيار بادئة تلقائيًا لك (في هذه الحالة ، تستخدم واحدة فارغة). إذا كنت ترغب في إجبار استخدام بادئة محددة ، فيجب عليك توفير سمة إعلان مساحة الاسم.

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