public void GetAllNodes(XmlNodeList node, XmlWriter writer)
{
foreach (XmlNode xn in node)
{
if (!xn.HasChildNodes)
{
string content = xn.ParentNode.InnerXml;
if (content.Contains("~!dbwbook name=\"标注\""))
{
content = content.Replace("~!dbwbook name=\"标注\"", "<标注");
content = content.Replace("!~!", ">");
if (content.Contains("~!/dbwbook!~"))
{
content = content.Replace("~!/dbwbook!~", "</标注>");
}
}
writer.WriteString(content);
}
else
{
this.rdint += 1;
string ssid = sid + rdint.ToString();
writer.WriteStartElement(xn.Attributes[0].Value);
writer.WriteAttributeString("id", ssid);
writer.WriteEndElement();
}
}
}我现在要将文本中的"~!dbwbook name="标注"标记写入XML中,改为<标注 ....>,
将~!/dbwbook!~写入XML文件中,改为</标注>,但转换结果:将<标注 commentid="3">著名的北方大川松花江和乌苏里江尽揽怀</标注>中之后,<,>都被转换为<,这是XML转义符,请问大家如何不让它转义,我就要<,>符号???谢谢大家!!!
{
foreach (XmlNode xn in node)
{
if (!xn.HasChildNodes)
{
string content = xn.ParentNode.InnerXml;
if (content.Contains("~!dbwbook name=\"标注\""))
{
content = content.Replace("~!dbwbook name=\"标注\"", "<标注");
content = content.Replace("!~!", ">");
if (content.Contains("~!/dbwbook!~"))
{
content = content.Replace("~!/dbwbook!~", "</标注>");
}
}
writer.WriteString(content);
}
else
{
this.rdint += 1;
string ssid = sid + rdint.ToString();
writer.WriteStartElement(xn.Attributes[0].Value);
writer.WriteAttributeString("id", ssid);
writer.WriteEndElement();
}
}
}我现在要将文本中的"~!dbwbook name="标注"标记写入XML中,改为<标注 ....>,
将~!/dbwbook!~写入XML文件中,改为</标注>,但转换结果:将<标注 commentid="3">著名的北方大川松花江和乌苏里江尽揽怀</标注>中之后,<,>都被转换为<,这是XML转义符,请问大家如何不让它转义,我就要<,>符号???谢谢大家!!!
< 的转义序列为 & lt; & #60;
> 的转义序列为 & gt; & #62;
< <
> >
<![CDATA[...]]> 的内容不会被作为Xml解析
否则就放入CDATA区或者取出来时再转义
xml规范有格式要求,你只有2种选择方法,换成< 是必须的,或者放在<![CDATA[<>""""任何内容]]> 使用的一段是可以解析到的。你如果非要使用<>,就会被看成xml的节点,你采取插入节点的方法就可以啊,WriteStartElement
要使用<>,就会被看成xml的节点,你采取插入节点的方法就可以啊 用innerxml
CDATA cdata = new CDATA("<标注 ....>");
element.addContent(cdata);