首页 新闻 搜索 专区 学院

xml编码转换问题 ?

0
悬赏园豆:20 [待解决问题]

以下是通过控制台自动生成的XML

 <?xml version="1.0" encoding="ISO-8859-1" ?>

- <usb_devices_list>
- <item>
<device_name>Port_#0002.Hub_#0004</device_name>
     <description>USB ÊäÈëÉ豸</description>
    <device_type>HID (Human Interface Device)</device_type>
</item>
-   </usb_devices_list>
    以下是 以text方式打开的
<<?xml version="1.0" encoding="ISO-8859-1" ?>
- <usb_devices_list>
- <item>
<device_name>Port_#0002.Hub_#0004</device_name>
     <description>USB 输入设备</description>
<device_type>HID (Human Interface Device)</device_type>
</item>
-   </usb_devices_list>
 
其中节点description是中文的在用C#代码读取XML文档时显示的就是乱码 ,
如果把encoding="ISO-8859-1" 改称GB2312再读取显示中文就OK 了,但是不能手动修改文件编码方式(一次自动生成好多XML文件的)
在网上找了也没找到好的方法,还请高手指教。
读取XML代码

  XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(Server.MapPath("~/")+"text.xml");                            
                            XmlNode xmlNode = xmlDoc.SelectSingleNode("usb_devices_list"); //取得xml下面的节点

                            foreach (XmlNode exMe in xmlNode)
                            {
                                if (exMe.SelectSingleNode("device_name") != null) //item
                                {

Result += "device_name:" + exMe.SelectSingleNode("device_name").InnerText;
Result += "description:" + exMe.SelectSingleNode("description").InnerText;

Result += "device_type:" + exMe.SelectSingleNode("device_type").InnerText;    
                                 }
                            }
           

 
xml
myhmsdn的主页 myhmsdn | 初学一级 | 园豆:8
提问于:2013-08-19 15:00
< >
分享
所有回答(2)
0

你的 C# 代码是否打开此文件的?给点代码看看。

Launcher | 园豆:45045 (高人七级) | 2013-08-19 15:04
0

方法1  不能手动修改编码,可以程序修改。

方法2  你可以试试c#用encoding="ISO-8859-1" 编码方式读取看看。

方法3 你可以直接读取文件的方法读取。

Albert Fei | 园豆:2102 (老鸟四级) | 2013-08-19 23:23

第一种方法中程序修改编码怎么修改?

第三种方法直接读取文件方法读取?该如何读?

支持(0) 反对(0) myhmsdn | 园豆:8 (初学一级) | 2013-08-20 09:21

@myhmsdn:   XmlWriterSettings 有许多选项可设定,如 

    XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = false;
            settings.IndentChars = string.Empty;
            settings.NewLineChars = Environment.NewLine;
            settings.Encoding = encoding;
            settings.NamespaceHandling = NamespaceHandling.OmitDuplicates;
            settings.ConformanceLevel = ConformanceLevel.Auto;

          用  settings.Encoding = encoding;设定好了,再保存后就是你设定的编码了。

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2013-08-20 10:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册