我對於最近來自java背景的Scala的工作比較陌生。從XML中提取元素名稱和屬性值
我正在尋求建議,以創建一種有效的讀取XML文件的方式,並提取包含在括號之間數據的位置中的元素名稱和屬性。
例如
<一些名> {屬性} <一些名稱/>
所以關鍵是有包含在{}數據,其中
我當時想使用包含在{}之間的實際元素名稱和屬性值填充哈希映射。
我相信這不是太複雜,但考慮到我目前有限的Scala專業知識,我想在論壇內反對這個問題。
非常感謝任何人花時間回答。
我對於最近來自java背景的Scala的工作比較陌生。從XML中提取元素名稱和屬性值
我正在尋求建議,以創建一種有效的讀取XML文件的方式,並提取包含在括號之間數據的位置中的元素名稱和屬性。
例如
<一些名> {屬性} <一些名稱/>
所以關鍵是有包含在{}數據,其中
我當時想使用包含在{}之間的實際元素名稱和屬性值填充哈希映射。
我相信這不是太複雜,但考慮到我目前有限的Scala專業知識,我想在論壇內反對這個問題。
非常感謝任何人花時間回答。
[已更新] 剛剛意識到你已經在文本中詢問了大括號,而不是關於xml相關的語法大括號。 可能的答案是:
scala> val xml = <a>
<prop>{{key1}}</prop>
<prop>{{key2}}</prop>
<prop>notkey</prop>
</a>
xml: scala.xml.Elem = <a><prop>{key1}</prop><prop>{key2}</prop><prop>notkey</prop></a>
我已經翻了一番{
和}
逃脫牙套,因爲Scala治療{
變量}
作爲替補:
scala> val text="all your base are belong to us"
text: java.lang.String = all your base are belong to us
scala> val template = <a>{text}</a>
template: scala.xml.Elem = <a>all your base are belong to us</a>
現在回去工作。
只能使用prop's
使用\
投影算子,它將帶有給定名稱的子節點。取得xml樹中的所有sub-sub -...-子節點,而不是使用\\
。
scala> val props = xml\"prop"
props: scala.xml.NodeSeq = NodeSeq(<prop>{key1}</prop>, <prop>{key2}</prop>, <prop>notkey</prop>)
val keys = props.filter (p => p.text.startsWith("{"))
res3: scala.xml.NodeSeq = NodeSeq(<prop>{key1}</prop>, <prop>{key2}</prop>)
其實,我在這裏受騙,以爲所不期望的屬性字段不能在形式上{存在notkey。您可以重寫代碼以其他方式過濾密鑰(例如,使用正則表達式)
scala> for(k <- keys) {
| println(k.label+":"+k.text)
| }
prop:{key1}
prop:{key2}
您可以舉一個實際的輸入示例,並且您想要添加什麼鍵/值?可能會有比現在接受的答案更好的解決方案。 –