运行以下代码时:
static void Main(string[] args)
{
var xmlDoc = new XmlDocument();
var fileReader = new BinaryReader(File.Open(@"C:\Users\username\Desktop\doc.xlf",FileMode.Open,FileAccess.Read,FileShare.Read));
var sourceStream = new MemoryStream(fileReader.ReadBytes((int)fileReader.BaseStream.Length));
xmlDoc.Load(sourceStream);
}
Run Code Online (Sandbox Code Playgroud)
在具有如下所示节点的文件上:
<source xml:lang="en-us">
<b>This text is displayed in Bold.</b><br>
<i>This text is displayed in italics.</i>
</source>
Run Code Online (Sandbox Code Playgroud)
读入时,节点将转换为以下内容:
<source xml:lang="en-us">
<b>This text is displayed in Bold.</b><br>
<i>This text is displayed in italics.</i>
</source>
Run Code Online (Sandbox Code Playgroud)
换句话说,所有人>都被替换了>
通常情况下这是可以的(我甚至认为它在技术上是合法的,即使是不好的做法),但在这种情况下,当读入时节点不会改变是绝对必要的.任何想法都是( 1)如何在xml中读取>或允许(2)如何解决这个问题?谢谢!
虽然右尖括号在XML中是合法的,但是没有选项XmlDocument可以避免将其更改为相应的实体.
您可以使用CDATA部分:
<source xml:lang="en-us">
<![CDATA[<b>This text is displayed in Bold.</b><br>
<i>This text is displayed in italics.</i>]]>
</source>
Run Code Online (Sandbox Code Playgroud)