Анализ файла XML, который на самом деле не является файлом XML (C # .NET) - PullRequest
0 голосов
/ 05 апреля 2011

У меня есть целая куча файлов, которые мне дал мой новый клиент, он сказал, что это XML. Я боюсь, что он далеко от этого, и говорит, что у него есть немного знаний в области программирования и сказал, что он хочет, чтобы я использовал Linq для XML, потому что он знаком с этим.

Вот как выглядит каждый файл (Примечание: реальные данные заменены поддельными)

<UserSettings>
   ${
      Name: String;
      Age: Int32;
      Gender: String;
   }

   ${
      Name: String;
      Age: Int32;
   }
</UserSettings>

Теперь, это просто слишком для меня.

Я пытаюсь разобрать эти файлы (а их сотни), но понятия не имею, с чего начать. Я думаю, что было бы лучше разобрать это сам, так как я не думаю, что это что-то вроде XML, или CSV, или Json (На самом деле, эти файлы больше похожи на Json, чем на все, с чем я сталкивался. Но тем не менее, я тоже не думаю, что это Джсон.)

Кто-нибудь видел этот материал раньше? Что бы вы посоветовали использовать для разбора чего-то подобного?

Ответы [ 3 ]

1 голос
/ 05 апреля 2011

Как сказал Роберт Харви, это похоже на JSON.Я бы "предварительно обработал" файлы, чтобы сделать его JSON и взять его оттуда.По сути, просто запустите набор поиска / замены, чтобы сделать его JSON - например, удалите $ с каким-либо именем переменной (не уверен, что это допустимо в JSON) и окружите переменные "".

Самый простой вариантсделать это с помощью grep в linux или какой-либо программы в windows, которая имеет хорошую функцию поиска / замены (например, notepad ++ или textpad)

0 голосов
/ 10 января 2014

Это работает для меня, используя Linq.

string xml = "<UserSettings>   ${      Name: String;      Age: Int32;      Gender: String;   }   ${      Name: String;      Age: Int32;   }</UserSettings>";

        try{
            XElement x = XElement.Parse(xml);
        }
        catch
        {
        }

Надеюсь, это поможет.

0 голосов
/ 05 апреля 2011

Да, я сомневаюсь, что синтаксический анализатор XML сможет их проанализировать. В идеале вы хотите иметь этот код JSON внутри тегов CDATA, чтобы он был действительным XML и мог быть проанализирован Linq-to-XML или другими программами чтения XML. Вы можете попросить клиента что-нибудь изменить?

<UserSettings>
    <![CDATA[
    ${
        Name: String;
        Age: Int32;
        Gender: String;
    }

    ${
        Name: String;
        Age: Int32;
    }
    ]]>
</UserSettings>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...