Основной объект JavaScript является ассоциативным массивом, таким образом, он может легко использоваться для хранения пар ключ/значение. Так с помощью JSON, Вы могли создать объект для каждой строки, которая будет локализована как это:
var localizedStrings={
confirmMessage:{
'en/US':'Are you sure?',
'fr/FR':'Est-ce que vous êtes certain?',
...
},
...
}
Тогда Вы могли получить версию локали каждой строки как это:
var locale='en/US';
var confirm=localizedStrings['confirmMessage'][locale];
Поскольку взят XDocument
, вот ответ XmlWriter
:
StringWriter sw = new StringWriter();
using (XmlWriter xw = XmlWriter.Create(sw)) {
xw.WriteStartElement("order");
xw.WriteElementString("user", "2343");
xw.WriteElementString("creditcardtype", "2333");
xw.WriteElementString("country", "USA");
xw.WriteStartElement("orderDetails");
xw.WriteElementString("amount", "23434");
xw.WriteElementString("shipping", "32");
xw.WriteEndElement();
xw.WriteEndElement();
}
string s = sw.ToString();
Или с XmlSerializer
:
[XmlRoot("order")] public class Order {
[XmlElement("user")] public int User { get; set; }
[XmlElement("creditcardtype")] public int CreditCardType { get; set; }
[XmlElement("country")] public string Country { get; set; }
[XmlElement("orderDetails")] public OrderDetails Details { get; set; }
}
public class OrderDetails {
[XmlElement("amount")] public int Amount { get; set; }
[XmlElement("shipping")] public int Shipping { get; set; }
}
....
var order = new Order {
User = 2343, CreditCardType = 2333, Country = "USA",
Details = new OrderDetails {
Amount = 23434,
Shipping = 32
}
};
XmlSerializer ser = new XmlSerializer(order.GetType());
StringWriter sw = new StringWriter();
ser.Serialize(sw, order);
string s = sw.ToString();
использовать класс XDocument, поэтому код будет похож на
XDocument srcTree = new XDocument(
new XElement("order",
new XElement("user", "2343"),
new XElement("creditcardtype", "2333"),
new XElement("country", "USA"),
new XElement("orderDetails",
new XElement ("amount", "23434"),
new XElement ("shipping", "32")
)
)
);
см. LINQ to XMl способ сделать это, примерно так
XDocument doc = new XDocument(new XElement("order",
new XElement("user", "2343"),
new XElement("creditcardtype", "2333"),
new XElement("country", "USA"),
new XElement("orderDetails",
new XElement("amount", "23434"),
new XElement("shipping", "32"))));
doc.Save("myxml.xml");
XmlDocument xml = new XmlDocument();
XmlElement order = xml.CreateElement("order");
xml.AppendChild(order);
XmlElement user = xml.CreateElement("user");
user.InnerText = "2343";
order.AppendChild(user);
XmlElement ccType = xml.CreateElement("creditcardtype");
ccType.InnerText = "2333";
order.AppendChild(ccType);
и т. Д.
Я бы пошел с предложениями Linq to XML, но для полноты картины мне просто нужно добавить следующее:
var xe = XElement.Parse("<order><user>2343</user><creditcardtype>2333</creditcarttype><country>USA</country><orderDetails><amount>23434</amount><shipping>32</shipping></orderDetails></order>");
:)
xsd.exe
для автоматического создания схемы в соответствии с заданным XML-файлом.) xsd.exe / classes
для создания классов C # в соответствии с вашим XML схема. XmlSerializer
для сериализации / десериализации вашего XML из / в объектную структуру C #. Существует также статья проекта кода , описывающая это подход.