将XML reader.value值转换为整数 [英] Convert XML reader.value values to integer

查看:85
本文介绍了将XML reader.value值转换为整数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好!

我正在尝试比较XmlTextReader值以确定哪个值更大.

这是我到目前为止的代码:

Hi everyone!

I am trying to compare XmlTextReader values to determine which is greater in value.

This is the code I have so far:

int newVersion1 = 0;
            string xmlUrl1 = @"C:\Users\Programming\Desktop\update.xml";
            XmlTextReader reader1 = null;

            int newVersion2 = 0;
            string xmlUrl2 = @"C:\Users\Programming\Desktop\update2.xml";
            XmlTextReader reader2 = null;

            try
            {
                reader1 = new XmlTextReader(xmlUrl1);
                reader1.MoveToContent();
                string elementName = "";
                if ((reader1.NodeType == XmlNodeType.Element) && (reader1.Name == "sqldbfile"))
                {                    
                    while (reader1.Read())
                    {
                        if (reader1.NodeType == XmlNodeType.Element)
                        {                                                     
                            elementName = reader1.Name;
                        }
                        else
                        {                            
                            if (reader1.NodeType == XmlNodeType.Text)
                            {                                
                                switch (elementName)
                                {
                                    case "version":
                                        newVersion1 = Convert.ToInt32(reader1.Value);
                                        break;                                    
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (reader1 != null)
                {
                    reader1.Close();
                }
            }
            //////////////////////////////////////////////////////////////////////////////////////
            try
            {
                reader2 = new XmlTextReader(xmlUrl2);
                reader2.MoveToContent();
                string elementName = "";
                if (reader2.NodeType == XmlNodeType.Element)
                {
                    while (reader2.Read())
                    {
                        if ((reader2.NodeType == XmlNodeType.Element) && (reader2.Name == "sqldbfile"))
                        {
                            elementName = reader2.Name;
                        }
                        else
                        {
                            if (reader2.NodeType == XmlNodeType.Text)
                            {
                                switch (elementName)
                                {
                                    case "version":
                                        newVersion2 = Convert.ToInt32(reader2.Value);                                        
                                        break;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (reader2 != null)
                {
                    reader2.Close();
                }
            }

            //string s1 = reader1.Value;
            //string s2 = reader2.Value;

            MessageBox.Show("reader 1 : " + reader1.Value);
            MessageBox.Show("reader 2 : " + reader2.Value);


当前输出:底部的消息框未显示reader1.value或reader2.value的任何输出.

预期输出:
XML文件在2个文件中的每个文件中都具有< version> 2.0.我想比较这两个以确定程序是否是最新的.我应该获取reader1.value和reader2.value的值.

我收到的错误是输入字符串的格式不正确!"有人知道我缺少什么吗?


Current Output: The MessageBoxes at the bottom are not presenting any output for reader1.value or reader2.value.

Intended Output:
The XML files have: <version>2.0 in each of the 2 files. I am wanting to compare these 2 to determine whether or not a program is up to date. I should be getting values for reader1.value and reader2.value.

The error I''m getting is "Input String is not in correct format!" Does anyone know what I''m missing?

推荐答案

转换?! System.Xml.XmlReader.ReadElementContentAsIntSystem.Xml.XmlReader.ReadContentAsInt有什么问题?无论如何,如果您需要转换"(正确的术语为解析"),则可以始终使用int.Parseint.TryParse:
http://msdn.microsoft.com/en-us/library/system.xml. xmlreader.aspx [ ^ ],
http://msdn.microsoft.com/en-us/library/system.int32. parse.aspx [ ^ ],
http://msdn.microsoft.com/en-us/library/system.int32. tryparse.aspx [ ^ ].

此外,为什么要确定真正需要直接使用XML?您可以考虑序列化,而进行序列化的最佳方法是使用 Data Contract :
http://msdn.microsoft.com/en-us/library/ms733127.aspx [ ^ ].

另请参阅我过去的答案:
如何在我的表单应用程序? [ ^ ],
创建属性文件... [
Convert?! What''s wrong with System.Xml.XmlReader.ReadElementContentAsInt or System.Xml.XmlReader.ReadContentAsInt? Anyway, if you need to "convert" (right term would be "parse"), you can always use int.Parse or int.TryParse:
http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.aspx[^],
http://msdn.microsoft.com/en-us/library/system.int32.parse.aspx[^],
http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx[^].

Besides, why are you so sure that your really need to work with XML directly? You could consider serialization, and the best approach to serialization would be using Data Contract:
http://msdn.microsoft.com/en-us/library/ms733127.aspx[^].

See also my past answers:
How can I utilize XML File streamwriter and reader in my form application?[^],
Creating property files...[^].

—SA


我没有阅读所有这些代码.但是,要将从XML获得的字符串转换为int,请使用int.TryParse.如果不是整数,则Convert.ToInt32会爆炸.
I am not reading all of this code. However, to convert the string you get from XML to an int, use int.TryParse. Convert.ToInt32 will blow up if it''s not an int.


这篇关于将XML reader.value值转换为整数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆