使用嵌入的阿拉伯语数据读取XML#

时间:2016-05-12 18:31:49

标签: c# utf-8 linq-to-xml xmldocument

我正在尝试加载包含ASCII文本和阿拉伯字符混合的XML文件。这是最高代码段:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ar_EG">
<context>
    <message>
        <location filename="ui/aboutdialog.cpp" line="90"/>
        <source>You have </source>
        <translation type="unfinished">يوجد لديك</translation>
    </message>
    <message>
        <location filename="ui/aboutdialog.cpp" line="90"/>
        <source> launches left</source>
        <translation type="unfinished">عدد التشغيلات المتبقية</translation>
    </message>
</context>

我想将它加载到C#TreeView对象中,但是我在加载到XDocument或XMLDocument时遇到了问题。

使用此:

XDocument xd = XDocument.Load(File.ReadAllText(tbxTSFileName.Text));

XDocument xd = XDocument.Load(File.ReadAllText(tbxTSFileName.Text, Encoding.GetEncoding(874)));

给我一​​个&#34;无效的URI:Uri字符串太长&#34;错误。

使用此:

XmlDocument xd = new XmlDocument();
xd.Load(tbxTSFileName.Text);

给出错误&#34;给定编码中的字符无效。第9行位置40&#34;。

2 个答案:

答案 0 :(得分:2)

阅读您正在呼叫的方法的文档。

XDocument.Load采用URL,而不是XML字符串。

您想要XDocument.Parse

答案 1 :(得分:0)

您的读者需要使用utf-8,如文档本身所示。理想情况下,您将使用XML阅读器,它将负责使用指定的编码本身。