none
xmlreader 如何读取有命名空间的xml RRS feed

答案

  • 你好,

    不好意思,周末休息。

    其实一个XML有没有名字空间定义与XmlReader怎么读取是没有联系,你照样是通过 Read 或者你所说的 ReadContentAsXXX 等方法去读取。

    简单的, xmlreader.Read(); 后,你就可以在xmlreader对象中看到如下信息:

    当然,如果是 ReadContentAs 方法,首先你的所读取的返回类型要是和XML中节点是有转换关系的,否则就会报错。如果你只想将Item的值读取到一个字符串中,则可以简单的先移动到 Item 节点,然后读取内容:

                String xmlString =
                    @"<?xml version='1.0'?>" +
                    @"<Items xmlns=""http://www.test.com"">" +
                        @"<Item>test</Item>" +
                    @"</Items>";
                StringReader textreader = new StringReader(xmlString);
                XmlReader xmlreader = XmlReader.Create(textreader);
                xmlreader.ReadToDescendant("Item");
                string value = (string)xmlreader.ReadElementContentAs(typeof(string), null);

    XmlReader是用来基于流形式读取XML内容的,参考 http://msdn.microsoft.com/zh-cn/library/system.xml.xmlreader.aspx 默认是不做序列化和反序列化处理,相关与序列化的动作,要是用到 XmlSerializer

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 zxbzhishui 2012年7月4日 3:42
    2012年7月2日 3:36
    版主

全部回复

  • 应该是用xmlreader.readcontentas,但是参数怎么传?谁用过??/
    2012年6月29日 5:53
  • 木有人用过吗??

    2012年7月2日 2:22
  • 你好,

    不好意思,周末休息。

    其实一个XML有没有名字空间定义与XmlReader怎么读取是没有联系,你照样是通过 Read 或者你所说的 ReadContentAsXXX 等方法去读取。

    简单的, xmlreader.Read(); 后,你就可以在xmlreader对象中看到如下信息:

    当然,如果是 ReadContentAs 方法,首先你的所读取的返回类型要是和XML中节点是有转换关系的,否则就会报错。如果你只想将Item的值读取到一个字符串中,则可以简单的先移动到 Item 节点,然后读取内容:

                String xmlString =
                    @"<?xml version='1.0'?>" +
                    @"<Items xmlns=""http://www.test.com"">" +
                        @"<Item>test</Item>" +
                    @"</Items>";
                StringReader textreader = new StringReader(xmlString);
                XmlReader xmlreader = XmlReader.Create(textreader);
                xmlreader.ReadToDescendant("Item");
                string value = (string)xmlreader.ReadElementContentAs(typeof(string), null);

    XmlReader是用来基于流形式读取XML内容的,参考 http://msdn.microsoft.com/zh-cn/library/system.xml.xmlreader.aspx 默认是不做序列化和反序列化处理,相关与序列化的动作,要是用到 XmlSerializer

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 zxbzhishui 2012年7月4日 3:42
    2012年7月2日 3:36
    版主