2013-02-20 6 views
1

я в настоящее время:
набор корневых пространств имен Префикс в XDocument

XNamespace xmlns = "XSDName";<br> 
XNamespace xsi = @"http://www.w3.org/2001/XMLSchema-instance";<br> 
XNamespace schemaloc = @"XSDName XSDName.xsd"; 
XDocument xdoc = new XDocument(
    new XElement("BaseReport", 
    new XAttribute(xsi + "schemaLocation", schemaloc), 
    new XAttribute(XNamespace.Xmlns+"ns1", xmlns), 
    new XAttribute(XNamespace.Xmlns + "xsi", xsi)); 

Это дает мне:

BaseReport xsi:schemaLocation="XSDName XSDName .xsd" xmlns:ns1="XSDName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

Как я могу BaseReport прочитать ns1:BaseReport?

+0

Можете ли вы добавить назначение для переменных 'xsi',' schemaloc' и 'xmlns' в ваш образец кода? –

+0

Там он обновлен. – user2073374

+0

После дополнительных исследований я не считаю, что вы можете использовать пространство имен в корневом элементе. Пространство имен определяется как атрибут корневого элемента и не определено для самого корня. Вы можете прочитать больше [здесь] (http://stackoverflow.com/q/4985974/299327). –

ответ

3

Приведенный ниже код предоставит вам необходимый результат. Ключ добавляет определенное пространство имен до имени и позволяет .NET определить правильный префикс.

XNamespace xmlns = "XSDName"; 
XNamespace xsi = @"http://www.w3.org/2001/XMLSchema-instance"; 
XNamespace schemaloc = @"XSDName XSDName.xsd"; 
XDocument xdoc = new XDocument(
    new XElement(xmlns + "BaseReport", 
    new XAttribute(xsi + "schemaLocation", schemaloc), 
    new XAttribute(XNamespace.Xmlns + "ns1", xmlns), 
    new XAttribute(XNamespace.Xmlns + "xsi", xsi))); 
+0

Ах, да, я получил это из предыдущей ссылки, которую вы отправили +/- какую-то ворчание. [Страница не обновлялась, derp.] Большое спасибо! – user2073374

+0

@ user2073374 Без проблем, я рад, что смогу помочь. –

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