2017-01-18 4 views
0

Как добавить char : в атрибут элемента XML?Как добавить символ ':' в атрибут XML

Вот как результат должен выглядеть

<alto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://www.loc.gov/standards/alto/ns-v3#" 
     xsi:schemaLocation="http://www.loc.gov/standards/alto/ns-v3# http://www.loc.gov/standards/alto/v3/alto-3-1.xsd" SCHEMAVERSION="3.1" 
     xmlns:xlink="http://www.w3.org/1999/xlink"> 

и до сих пор это мой код

var z = doc.Descendants("alto").First(); 
XNamespace ns = "http://www.w3.org/2001/XMLSchema-instance"; 
z.Add(new XAttribute(XNamespace.Xmlns + "xsi", ns.NamespaceName)); 

я попробовал этот код, но он дает мне ошибку

new XAttribute("xmlns", "http://www.loc.gov/standards/alto/ns-v3#") 

и вот сообщение об ошибке:

Приставка «» не может быть переопределен от «» до «» http://www.loc.gov/standards/alto/ns-v3# в пределах одного тега начала элемента

+1

Как должен выглядеть ваш выходной XML? И к какому атрибуту должен быть добавлен этот символ? – zx485

+0

Какое сообщение об ошибке? –

+0

@ zx485 на выходе xml на вопрос sir –

ответ

0

Вы должны поместить пространство имен по умолчанию в последнюю очередь. Для сложных пространств имен, подобных вашим, я обычно просто разбираю строку, например, код ниже:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string xml = 
       "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + 
       "<alto xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + 
        " xmlns=\"http://www.loc.gov/standards/alto/ns-v3#\"" + 
        " xsi:schemaLocation=\"http://www.loc.gov/standards/alto/ns-v3# http://www.loc.gov/standards/alto/v3/alto-3-1.xsd\" SCHEMAVERSION=\"3.1\"" + 
        " xmlns:xlink=\"http://www.w3.org/1999/xlink\">" + 
       "</alto>"; 

      XDocument doc = XDocument.Parse(xml); 
      XElement root = doc.Root; 

      XNamespace ns = root.GetDefaultNamespace(); 
      XNamespace nsXsi = root.GetNamespaceOfPrefix("xsi"); 
      XNamespace nsSchemaLocation = root.GetNamespaceOfPrefix("schemaLocation"); 
      XNamespace nsXlink = root.GetNamespaceOfPrefix("xlink"); 

     } 
    } 
} 
Смежные вопросы