[英]C# XPathDocument parsing string to XML with BOM
对于C#中的代码,我正在使用XPathDocument
将字符串解析为XML。
该字符串是从SDL Trados Studio检索的,并且取决于所使用的XML(最初是如何创建和加载以进行翻译的),有时,该字符串有时没有BOM 。
编辑:实际上是从源文本和目标文本以及结构元素的段中解析出“ xml”。 xml的文本元素被转义,标记和文本被连接在一个string
。 因此,如果标记在xliff
具有BOM,则字符串将具有BOM。
我试图实际上解析任何与编码无关的xml。 因此,此时,我的解决方案是使用Substring
删除BOM。
这是我的代码:
//Recreate XML files (extractor returns two string arrays)
string strSourceXML = String.Join("", extractor.TextSrc);
string strTargetXML = String.Join("", extractor.TextTgt);
//strip BOM
strSourceXML = strSourceXML.Substring(strSourceXML.IndexOf("<?"));
strTargetXML = strTargetXML.Substring(strSourceXML.IndexOf("<?"));
//Transform XML with the preview XSL
var xSourceDoc = new XPathDocument(strSourceXML);
var xTargetDoc = new XPathDocument(strTargetXML);
我通过诸如此类的几篇文章寻找了一个更好的解决方案,但是我没有找到更好的解决方案:
有什么建议可以更优雅地解决这个问题吗?
XPathDocument
的构造函数采用String
参数https://msdn.microsoft.com/zh-cn/library/te0h7f95%28v=vs.110%29.aspx带有带有XML文件位置的URI。 如果您有一个带有XML标记的字符串,请对该字符串使用StringReader
,例如
XPathDocument xSourceDoc;
using (TextReader tr = new StringReader(strSourceXML))
{
xSourceDoc = new XPathDocument(tr);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.