如何获取xml某个节点的多个值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取xml某个节点的多个值相关的知识,希望对你有一定的参考价值。

参考技术A // <summary>
/// 读取xml中的指定节点的值
/// </summary>
private string ReadXmlNode(string filename)

string result = "-1";
XmlDocument xmlDoc = new XmlDocument();
try

xmlDoc.LoadXml(filename);
//读取Activity节点下的数据。SelectSingleNode匹配第一个Activity节点
XmlNode root = xmlDoc.SelectSingleNode("//head");//当节点Workflow带有属性是,使用SelectSingleNode无法读取
if (root != null)
result = (root.SelectSingleNode("code")).InnerText;


catch //(Exception e)本回答被提问者采纳

Scala:如何从某个集合创建 XML 节点

【中文标题】Scala:如何从某个集合创建 XML 节点【英文标题】:Scala: how to create XML nodes from some collection 【发布时间】:2010-09-17 23:07:00 【问题描述】:

如果你有类似的东西:

val myStuff = Array(Person("joe",40), Person("mary", 35))

如何以该数据作为节点创建 XML 值?我知道如何在 XML 表达式中使用 大括号 来放置一个值,但这是一个值的集合。我需要显式迭代还是有更好的方法?

val myXml = <people> /* what here?! */ </people>

结果值应该是这样的:

<people><person><name>joe</name><age>40</age></person>
<person><name>mary</name><age>39</age></person></people>

【问题讨论】:

【参考方案1】:

因为它是一种函数式编程语言 Array.map 可能正是您要寻找的:

class Person(name : String, age : Int)
    def toXml() = <person><name> name </name><age> age </age></person>


object xml 
    val people = List(
        new Person("Alice", 16),
        new Person("Bob", 64)
    )

    val data = <people> people.map(p => p.toXml()) </people>

    def main(args : Array[String])
        println(data)
    

结果:

<people><person><name>Alice</name><age>16</age></person><person><name>Bob</name><age>64</age></person></people>

格式化的结果(为了更好的阅读):

<people>
   <person>
      <name>Alice</name>
      <age>16</age>
   </person>
   <person>
      <name>Bob</name>
      <age>64</age>
   </person>
</people>

【讨论】:

【参考方案2】:

为了完整起见,您还可以使用 for..yield(或函数调用):

import scala.xml

case class Person(val name: String, val age: Int) 
  def toXml(): xml.Elem =
    <person><name> name </name><age> age </age></person>


def peopleToXml(people: List[Person]): xml.Elem = 
  <people>
    for person <- people if person.age > 39
      yield person.toXml
  </people>


val data = List(Person("joe",40),Person("mary", 35))
println(peopleToXml(data))

(修复了 Woody Folsom 指出的错误)

【讨论】:

这种方法的优势是什么?我正在尝试更多地了解 Scala,我很好奇。 只是语法不同。在我的代码中,我通常使用 map() 来代替 Aaron Maenpaa 的答案。【参考方案3】:

实际上,yield person.toXml() 行不为我编译,但 yield person.toXml(不带括号)可以。即使我将“ToXml”的定义更改为显式返回 scala.xml.Elem ,原始版本也会抱怨“应用重载的方法值”

【讨论】:

我在解释器中没有收到任何错误,但可能是因为我忘记了在 toXml() 中设置返回类型,所以它以某种方式变成了 Unit。此外,我还删除了 toXml 正文中的错误分号。 :)

以上是关于如何获取xml某个节点的多个值的主要内容,如果未能解决你的问题,请参考以下文章

java语句如何获取XML文件的节点值

oracle的PL/SQL中如何根据节点名称直接获取xml某个节点的值

java如何读取xml节点元素值?

求C# 获取xml某个节点值方法

如何在c#中使用xelement获取xml节点值

asp.net如何获取到xml文件的节点值