none
Как изменить регистр имен Атрибутов XML файла? RRS feed

  • Вопрос

  • Добрый день!

    Искал на MSDN, нашел топик в котором описывается как изменить регистр имен Элементов.

    http://msdn.microsoft.com/ru-ru/library/system.xml.xmlwriter.writeattributes.aspx

    но нигде не нашел информации как изменить регистр имен атрибутов. 

    Вот пример файла.

      <?xml version="1.0" encoding="windows-1251" ?> 

    - <ZL_LIST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

      <ZGLV OKATO_OMS="82000" C_OKATO_1="61000" DATA="2011-06-03" VERSION="1.0" /> 

      <SCHET SUMMAV="24043.49" DSCHET="2011-06-03" NSCHET="366" MOUNTH="5" YEAR="2011" CODE_MO="" CODE="366" /> 

    - <ZAP N_ZAP="1">

      <PACIENT DOCNUM="546701" DOCSER="82 04" DOCTYPE="14" W="2" OT="ФАМИЛИЯ" IM="ИМЯ" FAM="ОТЧЕСТВО" NPOLIS="1235436471" SPOLIS="СП" VPOLIS="1" /> 

    - <SLUCH DATE_2="2011-04-20" DATA_1="2011-04-20" DS2="J06.9" DS1="J06.9" USL_OK="2" IDCASE="1" PROFIL="50" SUMV="131.43" RSLT="7" PRVS="40122">

      <USL PRVS="40122" SUMV_USL="131.43" /> 

      </SLUCH>

      </ZAP> 

      </ZL_LIST>

    25 июля 2011 г. 8:28

Ответы

  • сделал так:
    while (reader.Read())
    {
      if (reader.NodeType == XmlNodeType.Element)
      {
        writer.WriteStartElement(reader.Name.ToLower());                      
        if (reader.HasAttributes)
        {                      
          while (reader.MoveToNextAttribute())
          {
            if (reader.Name == "xmlns:xsi") writer.WriteAttributes(reader, false);
            else writer.WriteAttributeString(reader.Name.ToLower(), reader.Value);
          }
          reader.MoveToElement();
        }
        if (reader.IsEmptyElement) writer.WriteEndElement();
      }
      else if (reader.NodeType == XmlNodeType.EndElement)
      {
        writer.WriteEndElement();
      }
    }



    • Помечено в качестве ответа Abolmasov Dmitry 26 июля 2011 г. 6:54
    25 июля 2011 г. 11:51

Все ответы

  • Здравствуйте.

    А что если просто прочитать весь xml файл обычным ридером, как текст, потом всю строку привести в нижний регистр и записать обратно в новый xml файл?


    Для связи [mail]
    25 июля 2011 г. 9:26
  • Так не подойдет потому что значения атрибутов менять нельзя ни в коем случае.

    25 июля 2011 г. 9:40
  • сделал так:
    while (reader.Read())
    {
      if (reader.NodeType == XmlNodeType.Element)
      {
        writer.WriteStartElement(reader.Name.ToLower());                      
        if (reader.HasAttributes)
        {                      
          while (reader.MoveToNextAttribute())
          {
            if (reader.Name == "xmlns:xsi") writer.WriteAttributes(reader, false);
            else writer.WriteAttributeString(reader.Name.ToLower(), reader.Value);
          }
          reader.MoveToElement();
        }
        if (reader.IsEmptyElement) writer.WriteEndElement();
      }
      else if (reader.NodeType == XmlNodeType.EndElement)
      {
        writer.WriteEndElement();
      }
    }



    • Помечено в качестве ответа Abolmasov Dmitry 26 июля 2011 г. 6:54
    25 июля 2011 г. 11:51