【问题标题】:Scala XML Node (with namespace) attributes not accesableScala XML 节点(带有命名空间)属性不可访问
【发布时间】:2013-03-12 21:04:28
【问题描述】:

喂,

我正在尝试从此 XML 节点/Elem 获取 attrID。

scala> (desc(0) \ "_")(0)
res81: scala.xml.Node = <cor:attribute cor:attrDataType="int" cor:attrID="singleEventID"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cor="http://rdm.campusonline.at/">883819995</cor:attribute>

scala> (desc(0) \ "_")(0).attributes
res82: scala.xml.MetaData =  cor:attrDataType="int" cor:attrID="singleEventID"

scala> (desc(0) \ "_")(0).attribute("cor:attrID")
res83: Option[Seq[scala.xml.Node]] = None

scala> (desc(0) \ "_")(0).attribute("""attrID""")
res85: Option[Seq[scala.xml.Node]] = None

如果我手动删除命名空间,它工作得很好。

scala> val test4 = <attribute attrDataType="int" attrID="singleEventID" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cor="http://rdm.campusonline.at/">883819995</attribute>
test4: scala.xml.Elem = <attribute attrID="singleEventID" attrDataType="int" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cor="http://rdm.campusonline.at/">883819995</attribute>

scala> test4.attributes
res96: scala.xml.MetaData =  attrID="singleEventID" attrDataType="int"

scala> test4.attribute("attrID")
res98: Option[Seq[scala.xml.Node]] = Some(singleEventID)

如何在不手动删除命名空间的情况下使其工作?

【问题讨论】:

    标签: xml scala namespaces


    【解决方案1】:

    你需要像这样使用另一个attribute方法

    (desc(0) \ "_")(0).attribute("http://rdm.campusonline.at/", "attrID")
    

    【讨论】:

      【解决方案2】:

      此解决方案会将属性作为字符串提供给您

      val CoreNs = http://rdm.campusonline.at
      (desc(0) \ "_") \@ s"{$CoreNs}:attrID"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-13
        • 1970-01-01
        • 2012-07-25
        • 2019-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多