繁体   English   中英

C#XPathDocument使用BOM将字符串解析为XML

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM