2012-01-12 2 views
2

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

Я добавил пространство имен и префикс для набора данных, как это:

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> 

Я попытался установить префикс/пространство имен таблиц равным нулю например:

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

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

ответ

0

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

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

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

XmlDocument xDoc = new XmlDocument(); 
    xDoc.LoadXml(xml); 
    if (xDoc.DocumentElement.Attributes.Count > 0) 
    { 
     XmlAttribute xAtt = xDoc.DocumentElement.Attributes[0]; 
     xDoc.DocumentElement.Attributes.Remove(xAtt); 
+0

Возможные соображения производительности здесь, а также, в зависимости от размера вашего XML. – Nick

+0

Я не уверен, что это совсем другая история, так как файл xml, который я создаю, будет отправлен на сервер BizTalk для обработки, моя проблема заключается в том, что BizTalk не может проверить мой XML-файл, потому что ему не нравится пространство имен:) Я попробую решение, которое вы дали мне сейчас! плохой отчет назад :) –

+0

Ах, BizTalk, похоже, появляется в этих сценариях! Хорошо, дай мне знать. Решение, которое мы имели в BizTalk, состояло в том, чтобы иметь встроенный функционал в картографе, который, если я правильно напомню, сделал аналогичную работу с вышеизложенным. Есть потенциальные способы исправить это с помощью XSLT в Mapper, если это вариант для вас. Держи меня в курсе. – Nick

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