我有像
这样的XML<XYZ>front0
and</XYZ>
当我在xml中保存文本时,它就像我输入的内容一样保存。但是当我从XML获取它然后它显示在一行.. 问题是什么??任何建议PLZ
更新
XmlDocument xd = new XmlDocument();
string LastModifiedByTrans = "";
string date = "";
string LastModifiedByQaed = "";
string QAed_date = "";
try
{
foreach (var g in gp)
{
p.text = g.Text_xml.ToString();
// LOAD TEXT XML
xd.LoadXml(p.text);
XmlNodeList txt = xd.GetElementsByTagName("Texts");
for (int i = 0; i < txt.Count; i++)
{
XmlNode nd = txt.Item(i);
if (nd.HasChildNodes)
{
XmlNodeList cnd = nd.ChildNodes;
foreach (XmlNode n in cnd)
{
cont = n.ChildNodes[0].InnerText;
...
通过innerText我获取XML值..
就像是
n.ChildNodes[0].InnerText; "front0 and \r\n\r\nsaid can " string
但是当我在div标签中显示它时,它以单行显示
更新
public List<Room> getText(decimal Trans_ID, decimal Job_ID, string GroupName, string path)
{
GroupData p = new GroupData();
Room newroom = new Room();
var room = new List<Room>();
XmlDocument xd = new XmlDocument();
string LastModifiedByTrans = "";
string date = "";
string LastModifiedByQaed = "";
string QAed_date = "";
try
{
var gp = (from Trans_Mast in r2ge.Transcription_Master where Trans_Mast.Transcription_Id == Trans_ID && Trans_Mast.Entity_Id == Job_ID select Trans_Mast).Distinct();
foreach (var g in gp)
{
p.text = g.Text_xml.ToString();
// LOAD TEXT XML
xd.LoadXml(p.text);
XmlNodeList txt = xd.GetElementsByTagName("Texts");
for (int i = 0; i < txt.Count; i++)
{
XmlNode nd = txt.Item(i);
if (nd.HasChildNodes)
{
XmlNodeList cnd = nd.ChildNodes;
if (role == "Transcriber")
{
foreach (XmlNode n in cnd)
{
if (GroupName == n.Attributes["group"].Value && n.Attributes["audio"].Value.Equals(path) && n.Attributes["role"].Value.Equals("QA"))
{
LastModifiedByQaed = n.Attributes["user"].Value;
if (((n.Attributes["datetime"]).Value).Length > 0)
{
QAed_date = Convert.ToDateTime(n.Attributes["datetime"].Value).ToString("yyyy/MM/dd HH:mm:ss");
}
else
QAed_date = "";
}
}
foreach (XmlNode n in cnd)
{
if (GroupName == n.Attributes["group"].Value && n.Attributes["audio"].Value.Equals(path))
{
string cont = "";
string contnt = "";
if ((n.ChildNodes).Count > 0)
{
cont = n.ChildNodes[0].InnerText;
contnt = cont.Replace(System.Environment.NewLine, "<br/>");
}
else
cont = "blank";
if (((n.Attributes["datetime"]).Value).Length > 0)
{
date = Convert.ToDateTime(n.Attributes["datetime"].Value).ToString("yyyy/MM/dd HH:mm:ss");
}
else
date = "";
Text text = new Text()
{
Content = cont,
LastModifiedOn = date,
LastModifiedBy = n.Attributes["user"].Value,
LastModifiedBy_Qaed = LastModifiedByQaed,
LastModifiedOn_Qaed = QAed_date
};
newroom.text.Add(text);
}
}
}
}
}
}
}
catch (Exception ex)
{
Console.Write("In fetch text data err", ex.Message);
throw ex;
}
room.Add(newroom);
return room;
}
答案 0 :(得分:0)
您如何阅读XML? “获取XML”是什么意思? C#中有很多方法可以读取文件的XML内容 请提供用于获取XML文件的代码段。
这是我的代码片段,它从字符串中加载XML数据(由于假设您的文件正确写入而正确)。它正确地将多行XML元素读取为字符串。
更新哦,现在我明白了。我在学习PHP时遇到了同样的问题。这让我很疯狂 然后,我找到了答案:文本实际上正确显示。但是, HTML不会输出换行符。
这意味着:
你有XML:
<value>Hi
I am a multiline
value</value>
它被正确读取到字符串并输出到这样的HTML:
<div>
Hi
I am a multiline
value
</div>
但是,在浏览器中,您会看到一行。
这是一个JSFiddle:http://jsfiddle.net/s9d36a8n/
您可以通过查看源代码来确保我是否正确(在大多数浏览器中为Ctrl + U)。
如果您希望数据显示在多行上,则需要在每行的末尾放置HTML换行符<br/>
,如下所示:
<div>
Hi<br/>
I am a multline<br/>
value
</div>
您可以通过执行
来实现此目的htmlWithBrs = cont.Replace(Environment.NewLine, "<br/>");
你会得到这样的结果:http://jsfiddle.net/5vtk8ovk/