首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq-to-Xml前缀解析错误

Linq-to-Xml前缀解析错误
EN

Stack Overflow用户
提问于 2013-03-08 18:05:17
回答 2查看 187关注 0票数 0

我目前正在学习如何解析数据,这有点让人费解。有人能检查我的代码,看看我做错了什么,或者我是否朝着正确的方向前进。

XML文件:

代码语言:javascript
复制
<xml xmlns:a='BLAH'
     xmlns:b='BLAH'
     xmlns:c='BLAH'
     xmlns:d='BLAH'>
  <a:info>
   <b:cat Option1='blah' Option2='blah' Option3='blah' />
  </a:info>
</xml>

C#代码:

代码语言:javascript
复制
XmlDocument doc = new XmlDocument();
doc.Load(richTextBox2.Text);

XmlNamespaceManager man = new XmlNamespaceManager(doc.NameTable);
man.AddNamespace("a", "BLAH");
man.AddNamespace("b", "BLAH");
man.AddNamespace("c", "BLAH");
man.AddNamespace("d", "BLAH");

XmlNode temps = doc.SelectSingleNode("/a:info/b:cat/Option1/", man);

richTextBox1.Text = temps.InnerText;

我是C#的新手,我找不到一个很好的例子解释如何成功地使用循环来找到更多的循环:

代码语言:javascript
复制
<b:chat />
EN

回答 2

Stack Overflow用户

发布于 2013-03-08 18:12:46

如果要查找LINQ,则使用错误的API。使用XDocument类代替。

票数 0
EN

Stack Overflow用户

发布于 2013-03-08 18:22:43

假设输入了以下XML-文档(请注意名称空间URL):

代码语言:javascript
复制
<xml xmlns:a='http://localhost/scheme_a'
     xmlns:b='http://localhost/scheme_b'
     xmlns:c='http://localhost/scheme_c'
     xmlns:d='http://localhost/scheme_d'>
    <a:info>
       <b:cat Option1='1' Option2='1' Option3='1' />
    </a:info>

    <a:info>
       <b:cat Option1='2' Option2='2' Option3='2' />
    </a:info>
</xml>

有获得所有<b:chat />元素的方法。

  1. XmlDocument类: var xmlDocument =新XmlDocument();xmlDocument.Load(.);var xmlNamespaceManager =新XmlNamespaceManager(xmlDocument.NameTable);xmlNamespaceManager.AddNamespace("a",“a“”);xmlNamespaceManager.AddNamespace("b",“b“”);xmlNamespaceManager.AddNamespace("c",“c“”);xmlNamespaceManager.AddNamespace("d",“d“”);var bCatNodes = xmlDocument.SelectNodes("/xml/a:info/b:cat",xmlNamespaceManager);var option1Attributes =bCatNodes.Cast().Select(节点=> node.Attributes" Option1 ");//也可以使用XPath: // var option1Attributes ==>xmlNamespaceManager.Cast()直接检索所有Option1属性;
  2. LINQ到XML XDocument类。可以使用命名空间将XName传递给后裔()元素()方法。 使用后裔()获取所有<b:chat />元素。 var xDocument =XDocument.Load(.);XNamespace xNamespace = "b“;var xElements = xDocument.Descendants(xNamespace + "cat");//例如,获取b:chat元素的Option1属性值: var options1 = xElements.Select(element => element.Attribute("Option1")).ToList();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15300438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档