Как добавить двоеточие внутри элемента XML? Linq to xml C #

1

Я создаю XML файл из запроса linq. Элементы xml генерируются, однако я хочу добавить префикс в каждый элемент, чтобы он привел к следующей вещи:

XDocument xDoc =null;

xDoc = new XDocument(
                    new XDeclaration("1.0", "utf-8", "yes"),
                    new XElement("EmpLists",
                        new XElement("Employee",
                            new XElement("EmpId", '1'),
                            new XElement("Name", "Sam"),
                            new XElement("Sex", "Male"))));

Что делать, чтобы элементы печатались с их префиксом "CP:", как показано ниже?

<?xml version="1.0" encoding="utf-8" ?>
<CP:EmpLists>
 <CP:Employee>
    <CP:EmpId>1</CP:EmpId>
    <CP:Name>Sam</CP:Name>   
    <CP:Sex>Male</CP:Sex>
   <CP:Address>
      <CP:Street>7A Cox Street</CP:Street>
      <CP:City>Acampo</CP:City>
      <CP:State>CA</CP:State>
      <CP:Zip>95220</CP:Zip>
    </CP:Address>
 </CP:Employee>
 <CP:Employee>
    <CP:EmpId>2</CP:EmpId>
    <CP:Name>Lucy</CP:Name>
    <CP:Sex>Female</CP:Sex>
    <CP:Address>
      <CP:Street>Jess Bay</CP:Street>
      <CP:City>Alta</CP:City>
      <CP:State>CA</CP:State>
      <CP:Zip>95701</CP:Zip>
    </CP:Address>
 </CP:Employee>
 </CP:EmpLists>
  • 3
    Использовать пространства имен?
  • 0
    msdn.microsoft.com/en-us/library/bb387069.aspx (я не dotnetter, поэтому я оставлю кому-то еще, чтобы составить фактический ответ, если это не поможет)
Теги:
linq

2 ответа

3
Лучший ответ

Это работает для меня:

var url = "YOUR_NS_URL";
var ns = XNamespace.Get(url);

var xDoc =
    new XDocument( 
        new XDeclaration("1.0", "utf-8", "yes"),
        new XElement(ns + "EmpLists",
            new XAttribute(XNamespace.Xmlns + "CP", url),
            new XElement(ns + "Employee",
                new XElement(ns + "EmpId", '1'),
                new XElement(ns + "Name", "Sam"),
                new XElement(ns + "Sex", "Male"))));

Я получаю этот XML:

<CP:EmpLists xmlns:CP="YOUR_NS_URL">
  <CP:Employee>
    <CP:EmpId>1</CP:EmpId>
    <CP:Name>Sam</CP:Name>
    <CP:Sex>Male</CP:Sex>
  </CP:Employee>
</CP:EmpLists>
  • 0
    Это также работает для меня сейчас. Спасибо!
0

Вы захотите использовать пространство имен, см. Пример аналогичного пространства имен. Вам нужно будет создать экземпляр экземпляра XNamespace и использовать его как XAttribute, используя new XAttribute(XNamespace.Xmlns + "CP", ns).

  • 0
    Ваш пример был очень полезным и на самом деле то же решение, что и «Загадочность». Спасибо вам!
  • 0
    @ Xmare2 Рад помочь! :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню