Dataset.WriteXml () пространство имен и префикс - PullRequest
2 голосов
/ 12 января 2012

У меня есть DataSet с данными, которые я выводил (записывал) в файл XMl.

Я добавил пространство имен и префикс к набору данных следующим образом:

public static string XmlNamespace = "http://namespace";
public static string XmlPrefix = "ns0";
RequestDataSet.Namespace = XmlNamespace;
RequestDataSet.Prefix = XmlPrefix;

Вывод XML выглядит следующим образом:

<?xml version="1.0" standalone="yes"?>
<ns0:list xmlns:ns0="http://namespace">
  <ns0:item xmlns="http://namespace">
    <data1>1234</data1>
    <data2>91011</data2>
  </item>
</ns0:list>

Но так и должно быть: (нет пространства имен в записях элементов. Только префикс)

<?xml version="1.0" standalone="yes"?>
<ns0:list xmlns:ns0="http://namespace">
  <ns0:item>
    <data1>1234</data1>
    <data2>91011</data2>
  </item>
</ns0:list>

Я попытался установить для префикса / пространства имен таблиц значение null, как это:

RequestDataSet.Tables["item"].Prefix = XmlPrefix;
RequestDataSet.Tables["item"].Namespace = null;

Но это также неработа ... Кто-нибудь знает решение для этого?

1 Ответ

0 голосов
/ 12 января 2012

Я сталкивался с подобными проблемами, когда боролся с адаптерами BizTalk ... но это другая история.

Не уверен, что есть другой (более чистый) способ, но вы всегда можете «схватить» атрибут и удалить его, как описано здесь .

Эффективно, вы бы сделали следующее:

XmlDocument xDoc = new XmlDocument();
    xDoc.LoadXml(xml);
    if (xDoc.DocumentElement.Attributes.Count > 0)
    {
        XmlAttribute xAtt = xDoc.DocumentElement.Attributes[0];
        xDoc.DocumentElement.Attributes.Remove(xAtt);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...