devanagriからitransへのマッピングを持つ2つのxmlファイルがあります。これらのファイルは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ファイルから読み取り、文字を2次元配列に格納します。この配列は、default.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);
}
}
}
ここで、intranscontentには、div要素を持つWebページが含まれています。だから私はそれらからテキストノードを選択します。このコードでは、global.asaxにあったセッション変数にアクセスしているため、ノードは文字列に変換されてからchararrayに変換され、devanagriの文字をグジャラート語に置き換えることができます。
forループでは、すべての音訳規則を念頭に置いて、すべてのdevanagri文字と同等のグジャラート語文字をチェックする必要があります。音訳規則は、前の文字が母音の場合、母音のみを出力する必要があるようなものです。誰かがこのforループを手伝ってくれるなら、私は彼らに感謝するでしょう。ありがとう!質問は自由に投稿できます。