【问题标题】:C# XmlReader Colon Issues (Namespace)C# XmlReader 冒号问题(命名空间)
【发布时间】:2012-07-13 07:09:42
【问题描述】:

XMLReader 类有一个奇怪的问题。我从 URL 获取 atom 提要,xml 树的一些元素的命名如下:

<element:title>Hello World!</element:title>
<element:text>This is just an example</element:text>
<element:id>1</element:id>

我正在使用

[XmlElement("element:id")]

但这不起作用。当我查看代码时,我看到读者将其解析为

element_x003A_id

但如果我使用

[XmlElement("element_x003A_id)]

我什么也得不到。我尝试摆弄 Xml 编码,但该属性是只读的。我怎样才能逃脱这个,所以我可以得到元素的内容(如果元素没有分号,它就可以了)?

【问题讨论】:

  • 查看此链接:Namespaces in XML
  • 顺便说一句,: 是一个冒号;分号是;
  • 马克,你是对的,睡眠不足是沉默的杀手。

标签: c# feed atom-feed


【解决方案1】:

element 是命名空间别名。在某个地方,你有(通常在文件的顶部)

<foo ... xmlns:element="http://something/blah/blog">

“http://something/blah/blog”很重要。基本上,你需要:

[XmlElement("id", Namespace="http://something/blah/blog")]
public int Id {get;set;}

或者因为要重复使用:

const string MyNamespace = "http://something/blah/blog";
//...
[XmlElement("id", Namespace=MyNamespace)]
public int Id {get;set;}

【讨论】:

  • 谢谢你,我很遗憾错过了一些如此重要的东西。
  • @Anonymous 仅作记录,别名element 仅对读者没有意义;不同的文件可以完全合法使用xmlsn:evil=...&lt;evil:id&gt; - 并且数据将相同。这就是为什么[XmlElement(...)] 知道namespace,但不需要知道alias。事实上,您甚至不需要别名;可能是&lt;id xmlns="..."&gt;,它仍然是完全相同的数据。
  • 感谢您的澄清,添加命名空间完美。
猜你喜欢
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-23
相关资源
最近更新 更多