如何在C#中使用XmlReader读取xml兄弟

时间:2015-11-12 09:36:02

标签: xml xml-parsing xmlreader

我想阅读两个兄弟姐妹的元素,请在C#中使用XmlReader建议我采用适当的方法

这是我的XML

    <loginReturn>
        <canumber>100556369</canumber>
        <emailid>bhushan.patil@servpro.in</emailid>
        <firstname>abc</firstname>
        <lastname>abc</lastname>
        <masterca/>
        <message>Login succesful !</message>
        <meternumber>8683169</meternumber>
        <mobilenumber>1111111111</mobilenumber>
        <status>1</status>
        <subca/>
        <username>abcbbb</username>
     </loginReturn>

我想阅读&#34;状态&#34;首先,如果它不等于&#34; 1&#34;然后阅读&#34;消息&#34; ...

这是我的代码:

        using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
        {
            string msg = Strings.SUCCESS;

            reader.ReadToFollowing("status");
            var x = reader.ReadElementContentAsInt();

            if (x != 1)
            {
                reader.ReadToFollowing("message");
                msg = reader.ReadElementContentAsString();
            }

            return msg;
        }

1 个答案:

答案 0 :(得分:1)

编辑:您的评论明确表示,XmlDocument在Xamarin中不可用。我没有Xamarin的经验,没有机会测试它。但是一个简短的研究将我带到XPathDocument(创建一个XPathNavigator),似乎在Xamarin中得到了支持。解决方案可能是这样的:

    string msg="OK";
    if(YourNavigator.Evaluate("/loginReturn/status/text()")!="1")
        msg=YourNavigator.Evaluate("loginReturn/message/text()");

这是完全未经测试的&#34; air-code&#34; ...希望这有助于......

这是我之前使用XmlDocument的回答 - 很遗憾没有在Xamarin中工作:

    string xml="<loginReturn><canumber>100556369</canumber><emailid>bhushan.patil@servpro.in</emailid>" +
               "<firstname>abc</firstname><lastname>abc</lastname><masterca/><message>Login succesful !</message>" + 
               "<meternumber>8683169</meternumber><mobilenumber>1111111111</mobilenumber><status>1</status><subca/>" + 
               "<username>abcbbb</username></loginReturn>";
    XmlDocument xdoc= new XmlDocument();
    xdoc.LoadXml(xml);

    string msg="OK";
    if(xdoc["loginReturn"]["status"].InnerText!="1")
        msg=xdoc["loginReturn"]["message"].InnerText;