#xml #apache-spark #pyspark #azure-databricks #apache-spark-xml
Вопрос:
Я пытаюсь прочитать xml-файл в записной книжке Azure Databricks в PySpark. Проблема в том, что мой persons.xml в начале есть несколько комментариев. Я просто хочу игнорировать их во время чтения файла.
df = spark.read .format("com.databricks.spark.xml") .option("rowTag", "person") .xml("src/main/resources/persons.xml")
Мой XML выглядит так:
lt;?xml version="1.0" encoding="UTF-8"?gt; lt;!-- lt;topgt; lt;t1 attr1="a1"gt; lt;!-- t1 comment --gt; lt;t2gt;Something 1lt;/t2gt; lt;/t1gt; lt;!-- between rows comment --gt; lt;t1 attr1="a2"gt; lt;t2gt;Something 2lt;/t2gt; lt;/t1gt; lt;/topgt; --gt; lt;namangt; lt;t1 attr1="a1"gt; lt;t2gt;Something 1lt;/t2gt; lt;/t1gt; lt;t1 attr1="a2"gt; lt;t2gt;Something 2lt;/t2gt; lt;/t1gt; lt;/namangt;
Ответ №1:
Комментарии по умолчанию игнорируются, если вы их видите, значит, это что-то странное. например, если у меня есть следующий XML-файл:
lt;!-- top comment --gt; lt;topgt; lt;t1 attr1="a1"gt; lt;!-- t1 comment --gt; lt;t2gt;Something 1lt;/t2gt; lt;/t1gt; lt;!-- between rows comment --gt; lt;t1 attr1="a2"gt; lt;t2gt;Something 2lt;/t2gt; lt;/t1gt; lt;/topgt;
тогда это можно прочитать как, и никакие комментарии не будут записаны:
gt;gt;gt; df = spark.read.format("com.databricks.spark.xml") .option("rowTag", "t1").load("1.xml") gt;gt;gt; df.show() ------ ----------- |_attr1| t2| ------ ----------- | a1|Something 1| | a2|Something 2| ------ -----------
Комментарии:
1. На самом деле тип XML, который у меня есть, немного отличается от этого. В приведенном выше XML-файле в комментариях нет тегов XML. Однако XML, который у меня есть, похож на следующее: lt;!— верхний комментарий lt;вверхуgt; lt;вверхуgt;lt;t1 attr1=»a1″gt; lt;t1 attr1=»a1″gt;lt;!— комментарий t1 —gt; lt;!— комментарий t1 —gt;lt;t2gt;Что-то 1lt;t2gt;lt;/t2gt; lt;/t2gt;lt;/t1gt; lt;/t1gt;lt;/t1gt;lt;!— комментарий между строками—gt;lt;! — комментарий между строками —gt; lt;t1 attr1=»a2″gt;lt;t2gt;Что-то 2lt;t2gt;lt;/t2gt; lt;/t2gt;lt;/t1gt; lt;/t1gt;lt;/topgt; —lt;/topgt;gt; lt;/topgt;gt;lt;namangt; lt;namangt;lt;t1 attr1=»a1″gt; lt;t1 attr1=»a1″gt;lt;t2gt;Что-то 1lt;t2gt;lt;/t2gt; lt;/t2gt;lt;/t1gt; lt;/t1gt;lt;t1 attr1=»a2″gt; lt;t1 attr1=»a2″gt;lt;t2gt;Что-то 2lt;t2gt;lt;/t2gt; lt;/t2gt;lt;/t1gt; lt;/t1gt;lt; / namangt; Я хочу, чтобы читались только теги вне комментария, а не внутри комментария
2. Ваш XML-файл недействителен… Предоставьте образец XML, который вы пытаетесь проанализировать — добавьте к своему вопросу
3. Я добавил точный XML в вопрос.