我有具有天城文到itrans映射兩個XML文件,這些文件是dev.xml 和gujarati.xml。 xml文件內容如下:卡在for循環中!
爲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文件中讀取並將字符存儲在二維數組中。此數組isfurther存儲在會話變量,這樣我可以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元素的網頁。 所以我選擇他們的textnodes。在這段代碼中,我訪問global.asax中的session變量,將節點轉換爲字符串,然後chararray,以便我可以將devanagri的字符替換爲古吉拉特語。
在for循環中,我需要檢查每個devanagri字符是否記住所有音譯規則的等價古吉拉特字符。音譯規則就像前一個字母是元音那麼它應該只輸出元音。如果任何人都可以幫助我這個循環,我會感謝他們。謝謝!任何查詢免費發佈。
首先你應該考慮重構你的代碼。將您的變量重命名爲更有意義的名稱。這將有助於發現錯誤,即使在幾個月內你也能夠理解你的代碼。 – Zebi 2011-03-22 08:28:32
'如果前一個字母是元音,那麼它應該只輸出元音' - 這聽起來很奇怪,你能用其他方式來描述嗎? – 2011-03-22 11:17:48
काम是在印地文,所以在itrans是kaam,所以在印地文क表示爲k和一個表示爲अ但是當你檢查下一個字符再次是字母A,所以一旦你確認信其有它解釋爲AA映射到आ..如果你瞭解你印地文很容易得到它,也有一些音譯規則,問題是,它必須檢查的未來角色是否是元音或長輔音!如果它是一個元音,它必須使用一些不同的音譯規則,如果它是一個輔音,它必須使用其他的東西。 – vin 2011-03-22 14:10:35