【问题标题】:Getting attribute from xml node从 xml 节点获取属性
【发布时间】:2014-05-08 20:38:50
【问题描述】:

我为 Flash 播放器配置创建了一个 xml。我正在尝试将每个节点的属性加载到文本框或下拉列表中。

<config>
  <param name="width" value="960" />
  <param name="height" value="545" />
  <param name="loop" value="0" />
  <param name="autoload" value="1" />
  <param name="autoplay" value="1" />
  <param name="showstop" value="1" />
</config>

Dim XmlDoc As XmlDocument = New XmlDocument

    XmlDoc.Load(Server.MapPath("config.xml"))

    For Each Attribute As XmlAttribute In XmlDoc.DocumentElement.Attributes
        If Attribute.Name = "width" Then
            If Attribute.Name = "value' then" Then
                tbxWidth.Text = Attribute.Value
            End If

        End If


    Next

有人可以帮忙吗?

【问题讨论】:

  • Config 没有属性它有节点,它们有属性......你可以用 XmlDoc.DocumentElement.Select("param[@name='width']). 如果那不为空那么获取值属性。
  • 最重要的是属性怎么会有两个名字...

标签: asp.net xml vb.net


【解决方案1】:

保持你开始的方式......

Dim XmlDoc As XmlDocument = New XmlDocument
XmlDoc.Load(Server.MapPath("config.xml"))

For Each node As XmlNode In XmlDoc.DocumentElement.SelectNodes("param[@name='width']")
    XmlAttribute Attribute = node.Attributes["value"]        
    If Attribute IsNot Nothing Then
            tbxWidth.Text = Attribute.value
    End If
  Next
Next

不是 VB 男孩,所以期待奇怪的傻...

请注意,如果您有多个具有宽度属性的参数节点,这将采用最后一个...

【讨论】:

  • 使用这种方法,我必须将代码剪切和粘贴 12-15 次,然后将 ("param[@name='width']") 更改为下一个值和文本框。有没有一种方法可以做到这一点而不必多次剪切和粘贴?
  • 真的吗?你打算如何将一个属性映射到一个特定的文本框?只是做 SelectNodes("param") 代替。从那里您必须获取 name AND value 属性并使用 name (switch statement?, Dictionary ? ) 来确定您要设置哪个文本框的值。我们只能回答您提出的问题...
  • 如果我这样做,我会让这个方法返回一个名称和值的字典,可能带有一个 Linq 语句,然后处理如何在表单中显示它们。
  • 我不确定如何返回字典。可以举个例子吗?
  • 仅在 C# 中,我不是 VB Boy。问另一个问题。给出你的示例 xml 并询问如何使用 Linq 从它的 params 节点返回名称和值的字典到 xml
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多