Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath/C#,从多个名称空间获取数据_C#_Xml_Xpath - Fatal编程技术网

Xpath/C#,从多个名称空间获取数据

Xpath/C#,从多个名称空间获取数据,c#,xml,xpath,C#,Xml,Xpath,因此,在下面使用此代码示例的XML中,我可以成功地从XML中获取每个条目的家庭地址和名称信息。如果我还需要从每个条目中获取ID(驾驶执照号码XXX)信息,该怎么办 编辑:更新了Caiton的XML示例 代码示例: XmlDocument xDoc = new XmlDocument(); xDoc.LoadXml(responseFromServer); XmlNamespaceManager xnsmgr = new XmlNamespaceManager(xD

因此,在下面使用此代码示例的XML中,我可以成功地从XML中获取每个条目的家庭地址和名称信息。如果我还需要从每个条目中获取ID(驾驶执照号码XXX)信息,该怎么办

编辑:更新了Caiton的XML示例

代码示例:

XmlDocument xDoc = new XmlDocument();
        xDoc.LoadXml(responseFromServer);
        XmlNamespaceManager xnsmgr = new XmlNamespaceManager(xDoc.NameTable);
        xnsmgr.AddNamespace("ns1", "http://www.w3.org/2005/Atom");
        xnsmgr.AddNamespace("ns2", "http://strange.com/ns/1.0/");
        XmlNodeList xnlInsuredListMembers = xDoc.SelectNodes("//ns2:InsuredListMember", xnsmgr);
        foreach (XmlNode xnMember in xnlInsuredListMembers)
        {
            XmlNode xnHomeAddress = xnMember.SelectSingleNode("ns2:HomeAddress", xnsmgr);
            string sHomeAddress = xnHomeAddress.InnerText;

            XmlNode xnName = xnMember.SelectSingleNode("ns2:Name", xnsmgr);
            string sName = xnName.InnerText;

            MessageBox.Show(sHomeAddress + sName);
        }
XML示例

<?xml version="1.0" encoding="UTF-8"?>
    <feed xmlns="http://www.w3.org/2005/Atom">
      <id>someID</id>
      <title type="text">Title</title>
      <author>
        <name>XML Author</name>
      </author>
      <updated>2010-10-25T20:05:30.267Z</updated>
      <link href="currentURL"></link>
      <link href="nextURL"></link>
      <entry>
        <id>Drivers License Numberxxx</id>
        <content type="application/vnd.ctct+xml">
          <InsuredListMember xmlns="http://strange.com/ns/1.0/">
            <HomeAddress>123 anystreet</HomeAddress>
            <Name>doe, somegal</Name>
          </InsuredListMember>
        </content>
      </entry>
      <entry>
        <id>Drivers License Numberxxx</id>
        <content type="application/vnd.ctct+xml">
          <InsuredListMember xmlns="http://strange.com/ns/1.0/">
            <HomeAddress>321 anystreet</HomeAddress>
            <Name>doe, someguy</Name>
          </InsuredListMember>
        </content>
      </entry>
    </feed>

某物
标题
XML作者
2010-10-25T20:05:30.267Z
驾驶执照号码XXX
安尼街123号
多伊,某个女孩
驾驶执照号码XXX
安尼街321号
多伊,某个人

首先,根据您的输入示例,此
//ns2:ContactListMember
应该是
//ns2:InsuredListMember

其次,如果上下文节点是某个
ns2:InsuredListMember
,则通过以下表达式选择
id
属性:
@id


如果您想要给定的
ns2:InsuredListMember
ns1:id
子项
。当使用多个版本时会变得棘手=X还更新了xml以简化我要查找的内容。我不需要insuredlistmember的ID属性,我需要entry元素的ID字段,(feed/entry/ID)谢谢Alejandro!你是救命恩人@阿瑞斯·德莫林斯:你很好!但是“救命恩人”?我想知道你的工作环境如何!青年成就组织!已删除我的帖子,因为它与您的第一次编辑相关,并且与更新的编辑帖子无关:)