Пустая строка '' не является допустимым локальным именем - PullRequest
0 голосов
/ 28 сентября 2019

пытаясь добиться этого в XML-документе

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<pain.001.001.02>

..
</pain.001.001.02>
</Document>

использовал этот код

using (XmlWriter writer = XmlWriter.Create("BMW.xml"))
{
    string[] Color = new string[3] { "Red", "Black", "Blue" };
    writer.WriteStartDocument();
    writer.WriteStartElement("Document");
    writer.WriteAttributeString("xsi", "urn:iso:std:iso:20022:tech:xsd:pain.001.001.02");
    writer.WriteAttributeString("", "", "http://www.w3.org/2001/XMLSchema-instance");

    ....
}

получая эту ошибку «Пустая строка» не является допустимым локальным именем ».

, поэтому я попробовал приведенный ниже код, но не получил желаемый результат, который я упомянул, любая поддержка для получения желаемого результата будет полезна.

  writer.WriteAttributeString("xsi", "urn:iso:std:iso:20022:tech:xsd:pain.001.001.02", "http://www.w3.org/2001/XMLSchema-instance");

и попытался

writer.WriteAttributeString("xmlns", null, "urn:iso:std:iso:20022:tech:xsd:pain.001.001.02");

приводит к различной ошибке Префикс '' нельзя переопределить с '' на 'urn: iso: std: iso: 20022: tech: xsd: pain.001.001.02' в том же теге начального элемента.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

Если вы посмотрите на прекрасное руководство для WriteAttributeString, вы увидите довольно полезный пример, поскольку он записывает различные атрибуты, которые являются вариациями того, что вы ищете:

 ...

 // Write the xmlns:bk="urn:book" namespace declaration.
 writer.WriteAttributeString("xmlns","bk", null,"urn:book");

 ...

Что означало бы, что для записи атрибута ожидаемой формы необходимо указать имя для пространства имен и атрибута:

writer.WriteAttributeString("xmlns", "xsl", null, "http://www.w3.org/2001/XMLSchema-instance");

Я также сомневаюсь, что строка выше запишетданные, которые вы хотите, как вы, кажется, добавили xsi, когда сказали, что хотите выводить xmlns:

//doc says name can be null if prefix is xmlns (namespace declaration)
writer.WriteAttributeString("xmlns", null, null, "urn:iso:std:iso:20022:tech:xsd:pain.001.001.02");

Посмотрите на пример в MSDN, скопируйте его и измените значения, как вам нужно?

0 голосов
/ 28 сентября 2019

Может быть, вам нужно что-то вроде

writer.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");

вместо

writer.WriteAttributeString("", "", "http://www.w3.org/2001/XMLSchema-instance");

?

Соответствующее чтение: https://docs.microsoft.com/en-us/dotnet/api/system.xml.xmlwriter.writeattributestring?view=netframework-4.8

Надеюсь, что это получитсяВы начали в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...