Translating reliably between XML and JSON (xml2json)

Last week I was assigned to work on a simple yet interesting problem. MongoDB stores data as JSON. But it turns out we often have customers - especially in the important financial services market segment - where data is in XML. (Yes, SOAP still exists too!) To store that data into MongoDB, we need to transform it into JSON.

(For the impatient reader: here's the Github link!)

Storing XML as a text field

There are various ways one could do this. For example one could simply store the XML document as a whole in a single field, and then extract just a few parts of the XML that are stored as individual JSON keys. One reason to do this is that they can then be indexed and used in queries.

For example:

{ _id : ObjectId(...),
  firstName : "Henrik",
  lastName  : "Ingo",
  age       : 36,
  originalXml : "<person>
                    <firstName>Henrik</firstName>
                    <lastName>Ingo</lastName>
                    <height unit="cm">183</height>
                    <age>36</age>
                    <shoeSize unit="EU">44</shoeSize>
                 </person>"
}

The above MongoDB document could be searched for firstName, lastName and age and can return the original XML document found. But you could not index or query for shoeSize or height because they exist only in the XML and MongoDB is completely ignorant of them.

Translating XML into equivalent JSON

In the project I was assigned to however, we wanted to go further. We decided to just translate all of the XML into a JSON document, then store it as it is into MongoDB. Also we want to translate that JSON back into XML. This will be implemented later, but it implies a requirement that the XML->JSON translation must clearly be lossless, so that we can later end up with the original XML document.

For a given programming language, you should be able to find a couple libraries that try to do exactly this. For Node/JavaScript I've found: X2JS by Abdulla Abdurakhmanov, xml2js node npm module by leonidas, XML-to-JSON by stsvilik, XML to JSON jquery plugin and xml2json by Stefan Gössner.

I fond that most of them approach the problem quite similarly. I chose the last one as basis for my work, as it was a simple yet robust code base.

The devil is in the details

XML and JSON do the same thing. You have a hierarchy of nodes, which ultimately contain data in leaf nodes. As such it is clearly possible to just transform from one syntax to an equivalent representation in the other syntax.

The fun part comes with the realization that XML is more convoluted than JSON. (Eliot would say it is "too expressive".) XML elements have attributes and child elements. Now, attributes too are children of their parent element, but they somehow live in their own dimension, separately from the actual child elements.

Historically, in the HTML language that is used to format text documents, this distinction did make sense. The content itself is "data" in the child elements. Things that relate to the structure or formatting of the document are "not data", so they are attributes. For example:

<p id="e12345" style="font-size: 12pt">Hello World</p>

But once we started to use XML as a generic serialization format for any programmatic data, this doesn't make any sense. Semanitcally all of the below XML snippets mean the same thing.

<item type="boolean" value="true"></item>
<item type="boolean">true</item>
<item><type>boolean</type><value>true</value></item>

Which is the correct one you should use?

The existence of the attributes is problematic when translating into JSON. In JSON we only have one kind of children. So how can we distinguish between an attribute-child and a proper child?

Most of the libraries I looked into take the approach of making attributes available as children where the keyname is prefixed with an "@". For example the previous XML snippets would become:

{ item : { "@type" : "boolean", "@value" : "true" } }
{ item : { "@type" : "boolean", "#text" : "true" } }
{ item : { "type" : "boolean", "value" : "true" } }

This actually works fine, because xml element names cannot contain a "@", so there's no risk for name collisions, rather attributes are easy to distinguish.

Below I will focus on improvements I made to the "state of the art". If you want to read about more details before that, this XML.com article by Stefan Gössner covers these things more broadly.

My 2 improvements

There were 2 things I had to improve on to achieve what we wanted to do.

All of the libraries I looked at, would have a similar trade-off between correctness and readability. As you can see above, an XML text node might be found under a #text under the equivalent JSON document. This actually comes directly from the libxml parser, which returns #text as the value of the .nodeName property. However, for most simple documents that is not very elegant, rather a stylistically more "correct" translation is to simply put the text as a string value:

<e>Hello</e>  ->  { "e" : "Hello" }

Otoh, should the XML element "e" also have some attributes, this is of course not possible, so we fall back to using #text as the key:

<e id="123">Hello</e>  -> { "e" : { "@id" : "123", "#text" : "Hello" } }

The problem with this is the ambiguity. If we want to reference the string "Hello" in MongoDB, for example to retrieve it in a query, it's impossible to do if we cannot reliably know it's path. The first one can be found simply with { "e" : 1 } while the latter would be { "e.#text" : 1 }.

This is clearly a mess! In the real world this is gonna be a problem. Maybe the id attribute is optional, so some documents have it and some others don't. Or maybe it was introduced in a later version of the application, so that old documents don't have an id attribute but newer ones do. Such ambiguity would make our MongoDB database unusable.

To solve this problem I modified the xml2json translation so that attributes are output as siblings to their "parent" node:

<e id="123">Hello</e>  -> { "e@id" : "123", "e" : "Hello" }
<e>Hello</e>           -> { "e" : "Hello" }
<e id="123"></e>       -> { "e@id" : "123", "e" : null }

My second change deals with ordering. In XML the children are ordered:

<html>
<p>First paragraph.</p>
<p>Second paragpraph.</p>
</html>

(Note that attributes, otoh, are not ordered.)

In JSON the keys in a document are not in any particular order and not even guaranteed to maintain the order you think they have. The only structure in JSON that maintains order is the list structure. So to translate the above XML into JSON, we'd need a list. Interestingly, the popular way to do this would render the following translation:

{ html : { p : ["First paragraph", "Second paragraph"] } }

That looks good. Except it's a fairly limited solution! For example the following caused problems for the libraries I looked at:

<p>I feel <strong>fine</strong> today!</p>

The Node/NPM library would happily translate this as:

{ p : { strong : "fine", "#text" : "I feel  today!" } }

Stefan Grössner's library at least acted robustly and detected such "mixed" children, and left them untranslated:

{ p : "I feel <strong>fine</strong> today!" }

Neither of the above were satisfactory for my purposes. The solution is to employ JSON list structures when needed:

{ p : ["I feel ", { strong : "fine" }, " today!" ] }

Note that again we maintain a style vs correctness tradeoff. Correct would be to always use a JSON list to always keep ordering of child elements intact. But in most cases the application probably doesn't care about the ordering, so we assume that it is ok to only use lists when it is actually needed. Most of the time the reason is that you have 2 children with the same nodeName, such as in this case there were 2 #text elements, or above we also had 2 p elements.

It's on Github!

I published my improved xml2json library on Github. It's designed to work in modern browsers, and uses the DOMParser for the XML, but I did successfully use it in Node.js together with the libxml parser. For Node.js you need to change the code a little bit to integrate with the module.exports system, and the libxml parser instead of window.DOMParser, other than that it works as is. I'll try to integrate those changes to the Github code one day too.

(Note that I did not yet do corresponding changes to json2xml, so you can't actually translate backwards and get your original XML document.)

EJ, that's correct. Or to be precise, for json2xml conversion we would in any case want to support (almost) all possible json documents. But it did increase the complexity of the output phase of xml2json.

Still, it's not that bad and well worth the effort. For example, a MongoDB multi-key index is really cool, but it will only work with a single list, you cannot use it if you have multiple nested lists. So avoiding the list structure when not necessary is both useful and good style.

That's an even more extensive treatise on the topic!

Even then, it confirms how different these two worlds are. Even if you master the subtleties well, it comes across as you wrote JXON from an XML background. For example requiring a schema to get started seems odd from a JSON point of view. In JSON, having a schema is like a best case, most of the time you don't.

nadivane (not verified)

Thu, 2017-01-12 15:14

Thank you for your article. Now 3+ yrs later it is still a matter, what a shame. I would be happy if MongoDB would handle this issue on their side. My objective is connecting MongoDB to application which is naturally working with XML and cannot handle JSON. There are other NoSQL engines dealing with XML, however, I want to use MongoDB by all means.

Regarding your article - I am really missing the point of handling the types, as of having 42 transforming into JSON, may result in either { phone: 42 } or { phone: "42" }. Was the issue of dealing with types not a matter in you case?

Let me expose my point of view on the XML<->BSON issue. Actually - BSON, because we want to transform lossless between the two. "BSON extends the JSON model to provide additional data types, ordered fields..." [https://www.mongodb.com/json-and-bson] according to MongoDB note, so we want to handle those aspects in resulting XML.

In our situation, the BSON *is* the origin we want to get transformed to XML (and back of course), so we can focus on the XML to only support what we need in BSON, nothing more. In BSON, there is no idea of "attributes" (what we have in XML) - like you already mentioned in your post - so we dont ever need to handle them in XML, otoh, we have to handle the types supported by BSON in our XML:
{
name : "John",
age : 43,
address : {
street : "Street",
contact : "Bar"
}
float : 2.14
}

to XML

John
43

Street
<Foo>Bar

2.14

This is the way I would de/serialize MongoDB data (using StAX in Java). bson:type could also be replaced by java-type or xsd-type if you like. There is no one *the perfect* solution imho, I just wanted to show up another approach on handling this issue.

<doc>
<name>John</name>
<age bson:type="bson.integer">43</age>
<address>
<street>Street</street>
<contact>&lt;Foo/&gt;Bar</contact>
</address>
<float bson:type="bson.float">2.14</float>
</doc>

Hi Nadivane

Thanks for your comment!

Indeed, the situation has not changed a lot. In fact I think what has changed that this question doesn't come up very often anymore, so there was never any progress. Increasingly the architecture is to have some kind of HTTP server (or other middleware) in front of your MongoDB, and if you insert XML data, then it is natural to convert it there. So apart from the case where I developed this prototype, there was never really any demand to strengthen the support for XML. (And by demand, I mean enough that someone would have been willing to pay for it.)

As for your question, yes, the solution is not perfect, as it loses type information in the direction of BSON->XML. In the case I was working on when developing this, the goal was to develop a prototype to demonstrate back-to-back transformation of XML->BSON->XML. It also happened that we chose Node.js as the platform, so therefore JSON comes kind of naturally, since the MongoDB client in Node will take JavaScript objects natively. In some other language, as you say, you could just go directly XML->BSON and back.

Since the starting point in my case was XML, this solution actually didn't lose type information, because there are no types in XML. But if one would have access to the corresponding XML Schema, then it would indeed be appropriate to get and use the correct types. (And it wouldn't be difficult, I just didn't have more time to work on this.)

It seems in your case you're more interested in JSON->XML->JSON, or indeed BSON->XML->BSON. This library can be used for that, but without an XML schema, the original JSON/BSON types are lost on the way back. I've seen various ways to encode or hint the type of the XML data, and didn't quite like any of them. An attribute like you propose is perhaps the one that makes most sense though.

Your proposed solution is very similar to IBM's JSONx schema: https://www.ibm.com/support/knowledgecenter/SS9H2Y_7.5.0/com.ibm.dp.doc…

PedroGrelo (not verified)

Fri, 2024-03-15 17:12

I recently tried Organic Body Essentials https://organicbodyessentials.com/products/organic-skin-repair-cream and was pleasantly surprised. Their CBD grease provided swift help instead of my angst without any notable side effects. The flavor was mild and not overpowering. Additionally, their bloke service was tiptop, addressing my queries promptly. Entire, I warmly recommend Organic Body Essentials CBD fit anyone seeking high-quality CBD products.

Jaredcek (not verified)

Tue, 2024-05-14 22:34

Distressing <a href=https://greenrevolution.com/products/edibles/doozies/>Doozies</a&gt; products for the treatment of the sooner age was an eye-opening experience. The diminution and euphoria were unexpected but welcomed. It enhanced my sensory intuition and sparked a newfound acknowledgement in support of music and art. At any rate, the intense mania caught me off guard. Overall, it was a illustrious introduction to a advanced life of sensations.

LhaneRap (not verified)

Wed, 2024-05-15 09:35

В нашем обществе, где диплом - это начало отличной карьеры в любом направлении, многие ищут максимально быстрый и простой путь получения образования. Важность наличия официального документа переоценить просто невозможно. Ведь диплом открывает двери перед людьми, стремящимися вступить в сообщество профессионалов или продолжить обучение в высшем учебном заведении.
Предлагаем максимально быстро получить этот важный документ. Вы сможете купить диплом нового или старого образца, что является выгодным решением для человека, который не смог закончить обучение, потерял документ или хочет исправить свои оценки. диплом изготавливается аккуратно, с максимальным вниманием к мельчайшим элементам, чтобы в итоге получился 100% оригинальный документ.
Преимущество такого решения состоит не только в том, что вы быстро получите диплом. Процесс организован удобно, с профессиональной поддержкой. Начиная от выбора подходящего образца до точного заполнения персональной информации и доставки в любое место страны — все под полным контролем качественных специалистов.
Для всех, кто пытается найти максимально быстрый способ получения необходимого документа, наша компания может предложить выгодное решение. Купить диплом - это значит избежать продолжительного обучения и сразу перейти к достижению личных целей, будь то поступление в университет или начало удачной карьеры.
https://pds-drive.ru/korporativnym-klientam.html

EarnestFuh (not verified)

Wed, 2024-05-15 10:50

В нашем обществе, где диплом является началом отличной карьеры в любом направлении, многие стараются найти максимально быстрый путь получения образования. Важность наличия официального документа переоценить невозможно. Ведь именно диплом открывает двери перед всеми, кто стремится вступить в профессиональное сообщество или продолжить обучение в каком-либо ВУЗе.
Предлагаем очень быстро получить этот важный документ. Вы можете приобрести диплом нового или старого образца, и это является выгодным решением для человека, который не смог завершить образование, потерял документ или хочет исправить свои оценки. Любой диплом изготавливается с особой тщательностью, вниманием к мельчайшим деталям, чтобы на выходе получился полностью оригинальный документ.
Превосходство данного решения состоит не только в том, что вы быстро получите свой диплом. Весь процесс организовывается просто и легко, с профессиональной поддержкой. Начав от выбора подходящего образца диплома до грамотного заполнения личной информации и доставки по России — все находится под абсолютным контролем квалифицированных специалистов.
В итоге, для тех, кто ищет оперативный способ получить требуемый документ, наша компания предлагает выгодное решение. Приобрести диплом - значит избежать долгого обучения и сразу переходить к достижению собственных целей: к поступлению в университет или к началу трудовой карьеры.
<a href=https://diploman-russia.ru>diploman-russia.ru</a&gt;

GichardVieks (not verified)

Wed, 2024-05-15 13:53

В нашем мире, где диплом становится началом удачной карьеры в любой области, многие пытаются найти максимально быстрый и простой путь получения образования. Важность наличия документа об образовании трудно переоценить. Ведь именно он открывает дверь перед людьми, желающими вступить в профессиональное сообщество или продолжить обучение в университете.
Наша компания предлагает максимально быстро получить этот важный документ. Вы сможете купить диплом нового или старого образца, что становится выгодным решением для человека, который не смог закончить обучение или потерял документ. Все дипломы производятся аккуратно, с особым вниманием к мельчайшим элементам. В итоге вы сможете получить документ, полностью соответствующий оригиналу.
Превосходство данного решения состоит не только в том, что вы максимально быстро получите свой диплом. Процесс организован удобно, с нашей поддержкой. От выбора подходящего образца до консультаций по заполнению персональной информации и доставки в любой регион России — все будет находиться под полным контролем качественных мастеров.
В результате, для всех, кто ищет оперативный способ получения требуемого документа, наша компания предлагает отличное решение. Купить диплом - это значит избежать продолжительного процесса обучения и сразу переходить к достижению собственных целей: к поступлению в ВУЗ или к началу удачной карьеры.
http://lronman.ru/services-21.html

SShaneRap (not verified)

Wed, 2024-05-15 16:22

В нашем мире, где диплом - это начало отличной карьеры в любой сфере, многие ищут максимально простой путь получения качественного образования. Наличие официального документа об образовании переоценить невозможно. Ведь именно он открывает двери перед людьми, желающими вступить в сообщество профессиональных специалистов или продолжить обучение в каком-либо университете.
В данном контексте наша компания предлагает быстро получить любой необходимый документ. Вы можете купить диплом старого или нового образца, и это является удачным решением для всех, кто не смог закончить обучение или потерял документ. дипломы изготавливаются с особой тщательностью, вниманием ко всем деталям, чтобы в результате получился 100% оригинальный документ.
Плюсы этого решения заключаются не только в том, что можно максимально быстро получить свой диплом. Процесс организован комфортно, с профессиональной поддержкой. Начав от выбора необходимого образца до консультации по заполнению персональной информации и доставки в любой регион России — все будет находиться под полным контролем квалифицированных мастеров.
Всем, кто пытается найти максимально быстрый способ получения требуемого документа, наша услуга предлагает выгодное решение. Купить диплом - значит избежать продолжительного процесса обучения и сразу перейти к личным целям: к поступлению в ВУЗ или к началу трудовой карьеры.
<a href=https://diplomanrus.ru>https://diplomanrus.ru</a&gt;

SLewisdax (not verified)

Thu, 2024-05-16 21:10

В современном мире, где диплом - это начало отличной карьеры в любой отрасли, многие пытаются найти максимально быстрый и простой путь получения качественного образования. Необходимость наличия документа об образовании переоценить невозможно. Ведь именно он открывает дверь перед людьми, желающими начать профессиональную деятельность или учиться в университете.
Предлагаем максимально быстро получить этот важный документ. Вы можете приобрести диплом, что будет удачным решением для человека, который не смог завершить обучение, потерял документ или желает исправить свои оценки. Любой диплом изготавливается с особой тщательностью, вниманием к мельчайшим элементам, чтобы на выходе получился полностью оригинальный документ.
Превосходство такого решения заключается не только в том, что можно быстро получить свой диплом. Весь процесс организовывается удобно, с профессиональной поддержкой. От выбора требуемого образца диплома до грамотного заполнения персональной информации и доставки в любое место страны — все находится под абсолютным контролем качественных специалистов.
Всем, кто хочет найти оперативный способ получить требуемый документ, наша компания предлагает выгодное решение. Заказать диплом - это значит избежать длительного процесса обучения и не теряя времени переходить к достижению собственных целей: к поступлению в университет или к началу успешной карьеры.
<a href=https://diplomans-rossians.ru>diplomans-rossians.ru</a&gt;

Davdidjaf (not verified)

Thu, 2024-05-16 21:28

В нашем обществе, где диплом становится началом отличной карьеры в любой отрасли, многие ищут максимально простой путь получения качественного образования. Наличие документа об образовании трудно переоценить. Ведь именно диплом открывает дверь перед каждым человеком, желающим вступить в сообщество квалифицированных специалистов или продолжить обучение в университете.
В данном контексте мы предлагаем очень быстро получить этот необходимый документ. Вы сможете приобрести диплом, и это становится отличным решением для человека, который не смог завершить образование, утратил документ или желает исправить плохие оценки. Все дипломы изготавливаются с особой тщательностью, вниманием ко всем деталям, чтобы в итоге получился продукт, полностью соответствующий оригиналу.
Преимущества этого подхода заключаются не только в том, что можно быстро получить диплом. Процесс организован удобно, с профессиональной поддержкой. От выбора требуемого образца до правильного заполнения личной информации и доставки в любое место страны — все под абсолютным контролем опытных специалистов.
Всем, кто пытается найти быстрый и простой способ получить требуемый документ, наша компания предлагает отличное решение. Заказать диплом - это значит избежать продолжительного процесса обучения и не теряя времени переходить к достижению своих целей: к поступлению в университет или к началу трудовой карьеры.
<a href=https://dlplomanrussian.ru>dlplomanrussian.ru</a&gt;

В современном мире, где диплом становится началом успешной карьеры в любой области, многие ищут максимально простой путь получения качественного образования. Факт наличия официального документа об образовании трудно переоценить. Ведь диплом открывает двери перед всеми, кто собирается вступить в сообщество профессионалов или продолжить обучение в ВУЗе.
В данном контексте наша компания предлагает оперативно получить этот важный документ. Вы можете приобрести диплом старого или нового образца, и это становится отличным решением для человека, который не смог закончить обучение или потерял документ. Все дипломы производятся аккуратно, с особым вниманием ко всем элементам. В итоге вы получите документ, максимально соответствующий оригиналу.
Превосходство подобного решения заключается не только в том, что вы сможете быстро получить свой диплом. Весь процесс организовывается комфортно, с профессиональной поддержкой. От выбора подходящего образца до грамотного заполнения персональных данных и доставки в любой регион России — все будет находиться под абсолютным контролем качественных специалистов.
Для тех, кто хочет найти быстрый способ получения требуемого документа, наша компания предлагает выгодное решение. Заказать диплом - значит избежать продолжительного процесса обучения и не теряя времени переходить к своим целям: к поступлению в университет или к началу трудовой карьеры.
http://www.tamboff.ru/forum/viewtopic.php?p=7693853
https://izhevsk.ru/forummessage/153/6114277.html

Stephenjaw (not verified)

Sat, 2024-05-18 15:29

В современном мире, где диплом - это начало удачной карьеры в любом направлении, многие пытаются найти максимально простой путь получения образования. Наличие официального документа переоценить невозможно. Ведь диплом открывает двери перед каждым человеком, желающим начать трудовую деятельность или учиться в каком-либо университете.
В данном контексте мы предлагаем максимально быстро получить любой необходимый документ. Вы можете купить диплом нового или старого образца, и это будет удачным решением для всех, кто не смог завершить образование или потерял документ. Каждый диплом изготавливается с особой аккуратностью, вниманием к мельчайшим нюансам, чтобы в результате получился продукт, полностью соответствующий оригиналу.
Превосходство этого решения состоит не только в том, что вы быстро получите свой диплом. Процесс организовывается просто и легко, с нашей поддержкой. Начав от выбора требуемого образца до консультаций по заполнению персональной информации и доставки по России — все под полным контролем опытных специалистов.
В результате, для тех, кто хочет найти быстрый и простой способ получения требуемого документа, наша компания готова предложить выгодное решение. Заказать диплом - значит избежать продолжительного процесса обучения и не теряя времени перейти к личным целям: к поступлению в университет или к началу удачной карьеры.
www.graynet.ru/gopms-244-1.htmlВ 
textualheritage.org/lt/el-manusctipt-2014/88.htmlВ 
hefeiyechang.com/home.php?mod=space&uid=13313В 
lightsquad.pt/equacao-motor-an-unforgettable-christmas/В 
www.prvduma.ru/news/1078-garantiya-na-kapremont-5-let.htmlВ 

Earnestaxion (not verified)

Sun, 2024-05-26 14:07

Нотариальное Согласие Цена
Диплом ВУЗа подтверждает, что его обладатель имеет высшее образование. Именно поэтому наши документы ничем не отличаются от настоящих дипломов <a href="/meditsinskiy-sertifikat.txt">Медицинский Сертификат</a> государственного образца и ни у кого не вызывают <b>нотариальных согласий.</b> Почему купить диплом необходимо в Russian Diplom, во-вторых, мы предлагаем быструю и надежную доставку, Особенно в плане поиска работы и профессиональной занятости, сегодня наша компания предлагает купить диплом в ярославле, одно из первых в этом перечне занимает профессия. Наша организация не может допустить, чтобы кто либо узнал о клиенте, заказавшем у нас <i>цену.</i> Старайтесь отдавать предпочтение профессиям, в которых вы разбираетесь и теоретически, и практически так у вас будет больше шансов максимально быстро найти достойную должность в престижной компании и, как следствие, получать хорошие деньги за свою работу. Сегодня подобное вещество можно достать в быту, подделка не столь сложная.
<a href=https://landik-diploms-srednee.ru>www.russkiy365-diploms-srednee.ru</a&…;
<h2>Диплом Ссср </h2>
Для того, чтобы воспользоваться нашими услугами, вам необходимо предоставить нам свои персональные данные, а также специальность, которую вы бы хотели получить. Однозначно, человек, который претендует на определенную должность, может владеть высоким уровнем практических знаний, но чтобы пройти отбор, желательно купить диплом в Перми и при таком раскладе проблем с устройством на работу не будет. Продажа дипломов училища - это плюс в <a href="/foto-attestata.txt">Фото Аттестата</a> средств по <em>согласью</em> цели в поиске любимой, высокооплачиваемой работы. Даже самая придирчивая проверка не сможет найти недостатков в дипломах, которые <b>цены</b> заказаны у нас.
<h3>Где Купить Диплом О Высшем Образовании </h3>
), справка должна быть датирована 29,30 января, окончание сессии за 7 семестр. Если корочка нужена для принятия на <i>цену</i> в иностранную фирму или силовые органы, где проверка происходит с особой тщательностью, лучше перестраховаться и приобрести настоящий диплом института. Вуз можно рассмотреть в Московской области, возможно и в регионе РФ (если там есть свои люди, которые помогут помочь в случае проверки или звонков туда.

Fobertkag (not verified)

Sun, 2024-05-26 20:24

Степень Магистра
Это совокупность, которая содержит в себе массивы правовой информации и инструменты, благодаря которым пользователем системы могут выполняться различного рода операции поиска необходимых документов. За исключением нескольких позиций, мы не работаем по предоплате клиент платит только после того, как получит товар на руки. Если вашей главной задачей стоит трудоустройство в зарубежную компанию или вы желаете серьезно заниматься научной деятельностью, то наша фирма рада предложить вам диплом кандидата наук. Корочки, которые мы изготавливаем, надёжные, качественные и доступные в цене. Нет предварительного просмотра перед печатью, можно ли купить диплом с занесением в реестр, Эти знания могут стать вашим реальным капиталом для будущего, Как пользоваться купленным дипломом и не бояться последствий, в течение 15 минут в рабочее время мы свяжемся с вами, о, учебное заведение, год окончания, специальность и прочее.
<a href=https://landik-diploms-srednee.ru>russkiy365-diploms-srednee.ru</a&gt;
<h2>Купить Диплом Владивосток Отзывы </h2>
Если Вы решили купить диплом о среднем образовании, то необходимо отнестись к вопросу очень серьезно. С 2013 года к вузовской подготовке также относят аспирантуру, ординатуру и ассистентуру-стажировку. Если руководство устраивает качество работы, а следовательно, вопросов в квалификации не возникает, то и необходимость такой проверки отпадает. Поэтому, покупка документов, станет хорошим вложением в будущее, и обеспечит финансовую стабильность.
<h3>Сколько Стоит Красный Диплом </h3>
Вряд ли такой факт является для кого-то секретным, но все же появляются некоторые трудности и сложности чтобы доказать это работодателю. Мы готовы открыть <b>степени Магистра</b> в мир высокого положения и финансового благополучия. Если у Вас нет времени получать высшее образование, то можно купить диплом магистра в нашей компании. В комплект готового диплома входит: подлинный бланк (настоящий гознак), приложение к нему, твердая <em>степень Магистра</em> синего цвета.

Add new comment

The content of this field is kept private and will not be shown publicly. Cookie & Privacy Policy
  • No HTML tags allowed.
  • External and mailto links in content links have an icon.
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.
  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Each email address will be obfuscated in a human readable fashion or, if JavaScript is enabled, replaced with a spam resistent clickable link. Email addresses will get the default web form unless specified. If replacement text (a persons name) is required a webform is also required. Separate each part with the "|" pipe symbol. Replace spaces in names with "_".
About the bookAbout this siteAcademicAccordAmazonBeginnersBooksBuildBotBusiness modelsbzrCassandraCloudcloud computingclsCommunitycommunityleadershipsummitConsistencycoodiaryCopyrightCreative CommonscssDatabasesdataminingDatastaxDevOpsDistributed ConsensusDrizzleDrupalEconomyelectronEthicsEurovisionFacebookFrosconFunnyGaleraGISgithubGnomeGovernanceHandlerSocketHigh AvailabilityimpressionistimpressjsInkscapeInternetJavaScriptjsonKDEKubuntuLicensingLinuxMaidanMaker cultureMariaDBmarkdownMEAN stackMepSQLMicrosoftMobileMongoDBMontyProgramMusicMySQLMySQL ClusterNerdsNodeNoSQLodbaOpen ContentOpen SourceOpenSQLCampOracleOSConPAMPPatentsPerconaperformancePersonalPhilosophyPHPPiratesPlanetDrupalPoliticsPostgreSQLPresalespresentationsPress releasesProgrammingRed HatReplicationSeveralninesSillySkySQLSolonStartupsSunSybaseSymbiansysbenchtalksTechnicalTechnologyThe making ofTransactionsTungstenTwitterUbuntuvolcanoWeb2.0WikipediaWork from HomexmlYouTube

Search

Recent blog posts

Recent comments