ASP.net Создание узла XLink и XDocument - PullRequest
1 голос
/ 12 февраля 2011

Я пытаюсь программно добавить новый узел XLink в XDocument, но .Net, похоже, создает их как атомизированные пространства имен и имен, и я не могу найти код для добавления узлов XLink в XML?

Мой код выглядит так:

//read in the current XML content
XDocument content = XDocument.Parse(xmlContent);

//add a new node called large images
XElement newNode = new XElement("large_images", "");
newNode.SetAttributeValue("{xmlns}xlink", "http://www.w3.org/1999/xlink");
newNode.SetAttributeValue("{xlink}type", "simple");
newNode.SetAttributeValue("{xlink}href", "tcm:5-550");
newNode.SetAttributeValue("{xlink}title", "of1_454x340.jpg");
content.Add(newNode);

К сожалению, этот новый узел выглядит так:

<large_images p1:xlink="http://www.w3.org/1999/xlink" p2:type="simple" p2:href="tcm:5-550" p2:title="of1_454x340.jpg" xmlns:p2="xlink" xmlns:p1="xmlns"></large_images>

Но мне нужно, чтобы узел выглядел так, чтобы он проходил проверку XML:

<large_images xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="tcm:5-550" xlink:title="of1_454x340.jpg"></large_images>

Кто-нибудь может помочь? Я не хочу идти по маршруту String.Replace (), поскольку кажется, что это должно быть возможно другим способом?

Спасибо

Ryan

1 Ответ

3 голосов
/ 12 февраля 2011

Я бы сделал это как:

XNamespace ns = "http://www.w3.org/1999/xlink";

XElement newNode = new XElement("large_images",
    new XAttribute(XNamespace.Xmlns + "xlink", ns),
    new XAttribute(ns + "type", "simple),
    new XAttribute(ns + "href", "tcm:5-550"),
    new XAttribute(ns + "title", "of1_454x340.jpg"));

Это производит XML:

<large_images xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
    xlink:href="tcm:5-550" xlink:title="of1_454x340.jpg" />
...