Как игнорировать комментарии при чтении XML-файла в базах данных Pyspark?

#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 в вопрос.