XML求助...谢谢.(在线等)
我现在要把数据存到XML中去.我已经把validateRequest="false"了. 系统将不自动检测.
我往XML里写数据的语句是这样的XmlElement body=xd.CreateElement("body");
body.InnerText=article.Value.ToString();
xerecord.AppendChild(body);
比如我想往XML中写入这个<html></html>,存储完后在XML中是这样的&lt;html&gt;&lt;/html&gt;
它好像把'&'也给换成&了.这样的话我用XSL把<html></html>显示出来时只能是&lt;html&gt;&lt;/html&gt; 了.
谁有办法解决呀.让存储进XML中的数据是<html></html>
这样就可是正常显示了呀.
谢谢.
在线等.
解决就散分...
问题点数:40、回复次数:24Top
1 楼zhwb36()回复于 2004-11-03 19:35:42 得分 0
就直接存这样的字符串“<html></html>”会把&变为&?Top
2 楼BearRui(孤熊 | 带你去看海!)回复于 2004-11-03 19:36:41 得分 20
try:
XmlCDataSection cdata=xd.CreateCDataSection(article.Value.ToString());
XmlElement body=xd.CreateElement("body");
body.AppendChild(cdata);
xerecord.AppendChild(body);
Top
3 楼earlsen(earlsen)回复于 2004-11-03 19:42:37 得分 0
public class Book
{
public string title;
static void Main()
{
Book introToVCS = new Book();
introToVCS.title = "Intro to Visual CSharp";
System.Xml.Serialization.XmlSerializer writer =
new System.Xml.Serialization.XmlSerializer(introToVCS.GetType());
System.IO.StreamWriter file =
new System.IO.StreamWriter("c:\\IntroToVCS.xml");
writer.Serialize(file, introToVCS);
file.Close();
}
}Top
4 楼parol2910(four wheel drive)回复于 2004-11-03 21:28:34 得分 0
还是没有解决.请大家再帮忙...Top
5 楼BearRui(孤熊 | 带你去看海!)回复于 2004-11-03 21:39:47 得分 0
我上面的代码不行吗,在CDATA节点中可以保存任何字符,不信可以用IE打开下面的XML看看
<?xml version="1.0"?>
<root>
<body>
<![CDATA[asdfq< & html&gt;& ]]>
</body>
</root>Top
6 楼parol2910(four wheel drive)回复于 2004-11-03 21:42:31 得分 0
可是怎么加呢?Top
7 楼BearRui(孤熊 | 带你去看海!)回复于 2004-11-03 21:56:16 得分 0
XmlDocument doc=new XmlDocument();
doc.Load("xmlfile");
XmlCDataSection cdata=doc.CreateCDataSection(article.Value.ToString());
XmlElement body=doc.CreateElement("body");
body.AppendChild(cdata);
doc.AppendChild(body);
doc.Svae("xmlfile");
Top
8 楼parol2910(four wheel drive)回复于 2004-11-03 21:58:11 得分 0
名称“cdata”在类或命名空间“FriendsReunion.sendarticle”中不存在Top
9 楼BearRui(孤熊 | 带你去看海!)回复于 2004-11-03 22:03:22 得分 0
下面是MSDN中的代码,你看看
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</book>");
//Create a CData section.
XmlCDataSection CData;
CData = doc.CreateCDataSection("All Jane Austen novels 25% off starting 3/23!");
//Add the new node to the document.
XmlElement root = doc.DocumentElement;
root.AppendChild(CData);
Console.WriteLine("Display the modified XML...");
doc.Save(Console.Out);
}
}
Top
10 楼parol2910(four wheel drive)回复于 2004-11-03 22:04:47 得分 0
<body><![CDATA[<html></html><>]]></body>
5555
存进去的变成这样了.Top
11 楼BearRui(孤熊 | 带你去看海!)回复于 2004-11-03 22:11:55 得分 0
你本来不是要保存lt;html></html这些字符吗!!!Top
12 楼parol2910(four wheel drive)回复于 2004-11-04 12:14:27 得分 0
是呀.
可是现在lt;html></html 谢谢在了CDATA里边了,等用XSL转换出来的时候,它就变成了<html></html><> ....
郁闷...
大家再帮忙呀...Top
13 楼BearRui(孤熊 | 带你去看海!)回复于 2004-11-04 12:39:55 得分 0
那你直接保存<html></html>到CDATA节点就行啦,不要保存为<html></html>。
看看你的XSLTop
14 楼net_lover(【孟子E章】)回复于 2004-11-04 12:46:11 得分 20
<xsl:value-of select="//body" disable-output-escaping="yes"></xsl:value-of>
即可Top
15 楼parol2910(four wheel drive)回复于 2004-11-04 12:47:54 得分 0
我现在是这么做的:
XmlCDataSection cdata=xd.CreateCDataSection(article.Value.ToString().Trim());
XmlElement body=xd.CreateElement("body");
body.AppendChild(cdata);
xerecord.AppendChild(body);
其中
article.Value.ToString().Trim()的内容是<html></html>
当我执行完后,它在XML文件中写入了
<body><![CDATA[<html></html><><><>]]></body>
等我再用XSL显示出来的时候,它就直接把CDATA中的内容显示出来了.没有把&lt;和&gt;转换成 < 和> ...
再帮忙.谢谢.Top
16 楼parol2910(four wheel drive)回复于 2004-11-04 12:56:14 得分 0
TO 孟子E章:
不行呀.
还是那样.Top
17 楼parol2910(four wheel drive)回复于 2004-11-04 13:20:52 得分 0
大家帮忙呀...谢谢
解决就散分...Top
18 楼net_lover(【孟子E章】)回复于 2004-11-04 13:27:37 得分 0
我给你写个
Top
19 楼parol2910(four wheel drive)回复于 2004-11-04 13:29:05 得分 0
好呀.谢谢.
在线等你.Top
20 楼BearRui(孤熊 | 带你去看海!)回复于 2004-11-04 13:39:19 得分 0
XSL:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head></head>
<body>
<xsl:value-of select="//body" disable-output-escaping="yes"></xsl:value-of>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
------------------
XML:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="123.xsl"?>
<root>
<body><![CDATA[
<html></html><><><>
]]>
</body>
</root>Top
21 楼net_lover(【孟子E章】)回复于 2004-11-04 13:42:54 得分 0
<%@ Page ValidateRequest="false" Language="C#" Debug="true"%>
<Script Language="C#" Runat="Server">
public void Button1_Click(Object sender,EventArgs e)
{
System.Xml.XmlDocument x = new System.Xml.XmlDocument();
x.LoadXml("<root/>");
Response.Write(Server.HtmlEncode(x.OuterXml));
System.Xml.XmlCDataSection body=x.CreateCDataSection(article.Value);
x.DocumentElement.AppendChild(body);
Response.Write("<hr>");
Response.Write(Server.HtmlEncode(x.OuterXml));
}
</Script>
<html>
<head><title>HtmlButton控件</title></head>
<body>
<form runat="server">
<textarea id=article runat=server><html></html></textarea>
<button id="button1" runat="server" OnServerClick="Button1_Click">提交</button>
</form>
</center>
</body>
</html>Top
22 楼parol2910(four wheel drive)回复于 2004-11-04 14:02:48 得分 0
这回晕了...
在你们给的例子里边是好使的.可是我的却不好使.
我再看看.Top
23 楼BearRui(孤熊 | 带你去看海!)回复于 2004-11-04 14:06:32 得分 0
看看你的XSL文件,可能有些地方不同而没注意!!!Top
24 楼parol2910(four wheel drive)回复于 2004-11-04 14:33:13 得分 0
太谢谢BearRui(孤熊 | 爱情!它把我给忘了!) 和 net_lover(孟子E章)
谢谢.
散分.:)Top




