у меня есть два xml-файла, которые имеют привязку devanagri к itrans, это файлы dev.xml
и gujarati.xml. Содержимое XML-файла выглядит следующим образом:
для guj.xml это:
<mapping>
<character>અ</character>
<itrans>a</itrans>
</mapping>
и для dev.xml это
<mapping>
<character>अ</character>
<itrans>a</itrans>
</mapping>
У меня есть файл global.asax, который имеет следующий код:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Xml.Linq;
using System.Xml;
namespace finAL
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
sbyte[,] d = new sbyte[100, 100];
sbyte[,] g = new sbyte[100, 100];
int count = 0;
int j = 0;
XmlDocument docA = new XmlDocument();
StreamReader sr = new StreamReader("dev.xml");
docA.Load(sr);
XmlDocument docB = new XmlDocument();
StreamReader sr1 = new StreamReader("guj.xml");
docB.Load(sr1);
XmlNodeList elemlist1 = root.GetElementsByTagName("mapping");
XmlNodeList elemlist2 = root.GetElementsByTagName("mapping");
XmlNodeList X;
for (int i = 0; i < elemlist1.Count; i++)
{
X = elemlist1[i].GetElementsByTagName("itrans");
d[i][0] = X[0].firstchild.data;
X = elemlist1[i].GetElementsByTagName("character");
d[i][1] = X[0].firstchild.data;
}
for (int i = 0; i < elemlist2.Count; i++)
{
X = elemlist1[i].GetElementsByTagName("itrans");
g[i][0] = X[0].firstchild.data;
X = elemlist1[i].GetElementsByTagName("character");
g[i][1] = X[0].firstchild.data;
}
Session("dtable") = d;
Session("gtable") = g;
}
}
}
Код здесь читает из обоих файлов xml и сохраняет символы в двухмерном массиве. Этот массив в дальнейшем сохраняется в переменной сеанса, чтобы я мог получить к нему доступ по умолчанию .aspx
Файл default.aspx содержит следующий код.
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml;
namespace finAL
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
sbyte[,] TableD = new sbyte[100, 100];
sbyte[,] TableG = new sbyte[100, 100];
XmlDocument doc = new XmlDocument();
doc.LoadXml("<div>" & Request.Form("inTransContent") & "</div>");
XmlNodeList nodeList;
nodeList = doc.DocumentElement.SelectNodes("//text()");
TableD = Session("dtable");
TableG = Session("gtable");
String str=tmpNode.data;
str.ToCharArray();
foreach (XmlText tmpNode in nodeList)
{
}
Response.Write(doc.DocumentElement.InnerXml);
}
}
}
здесь интрансконтент содержит веб-страницу с элементом div.
поэтому я выбираю текстовые узлы из них. В этом коде я обращаюсь к переменной сеанса, которая была в global.asax, узлы преобразуются в строки, а затем в chararray, чтобы я мог заменить символы деванагри на гуджарати.
В цикле for мне нужно проверить для каждого символа деванагри эквивалентный символ гуджарати, учитывая все правила транслитерации. Правила транслитерации аналогичны, если предыдущий символ гласный, тогда он должен выводить только гласный. Если кто-то может помочь мне с этим для цикла, я буду им благодарен Спасибо! Любые вопросы, пожалуйста, оставьте бесплатно.