C # Чтение и анализ всех XML-файлов в каталоге и запись в один CSV-файл

этот вопрос старый, но я думаю, что нашел лучшее решение для границы в регулярных выражениях с символами unicode. Используя XRegExp, вы можете реализовать допустимую границу \ b, расширяющую это

XRegExp('(?=^|$|[^\\p{L}])')

, результат имеет длину 4000+, но, похоже, работает довольно эффективно.

Некоторые объяснения: ( ? =) - это просмотр с нулевой длиной, который ищет начальную или конечную границу или небуквенный символ Юникода. Самое главное - это взгляд, потому что \ b ничего не захватывает: это просто правда или ложно.

1
задан Stefano Rosso 27 February 2019 в 15:02
поделиться

2 ответа

Вы можете использовать методы из System.Xml.XPath.Extensions, чтобы сделать это.

Например, если вы хотите выбрать один элемент, вы должны использовать XPathSelectElement ():

var element = xDocument.XPathSelectElement("/DatiBeniServizi/DettaglioLinee/CodiceArticolo/CodiceValore");

или использовать свой подход - вам нужно установить полный путь

var results = xDocument.Descendants("DatiBeniServizi").Select(x => new {
    Codice = (string)x.Elements("DettaglioLinee").Elements("CodiceArticolo").Elements("CodiceValore").FirstOrDefault()?.Value,
    Descrizione = (string)x.Elements("DettaglioLinee").Elements("Descrizione").FirstOrDefault()?.Value,
    Quantita = (string)x.Elements("DettaglioLinee").Elements("Quantita").FirstOrDefault()?.Value,
    PrezzoUnitario = (string)x.Elements("DettaglioLinee").Elements("PrezzoUnitario").FirstOrDefault()?.Value,
    AliquotaIVA = (string)x.Elements("DettaglioLinee").Elements("AliquotaIVA").FirstOrDefault()?.Value
}).ToList();
0
ответ дан Ivan Salo 27 February 2019 в 15:02
поделиться

Это еще один подход, но я не знаю, как использовать, я знаю, это смешно ..

public class Articolo
    {
        public varID codici { get; set; }
        public string varDescrizione { get; set; }
        public string varPrezzoUnitario { get; set; }
        public int varQuantita { get; set; }
        public string varAliquotaIVA { get; set; }

    }

    public class varID
    {
        public List<codicearticolo>  codice = new List<codicearticolo>();

    }

    public class codicearticolo
    {
        public string varcodicetipo { get; set; }
        public string varcodicevalore { get; set; }
    }

    private List<Articolo> GetArticoloList()
    {
        //This method converts an xml file into a .csv file

        XDocument xDocument = XDocument.Load(@"c:\ft\test.xml");
        StringBuilder dataToBeWritten = new StringBuilder();

        var results = from x in xDocument.Descendants("DatiBeniServizi")
                      select new Articolo
                      {
                          codici = new varID()
                          {
                              codice = new List<codicearticolo>(from code in x.Descendants("CodiceArticolo")
                                                                    select new codicearticolo
                                                                    {
                                                                        varcodicetipo = code.Element("CodiceTipo").Value,
                                                                        varcodicevalore = code.Element("CodiceValore").Value

                                                                    })
                          },
                          varDescrizione = x.Element("Descrizione").Value,
                          varPrezzoUnitario = x.Element("PrezzoUnitario").Value,
                         varQuantita  = Convert.ToInt32(x.Element("Quantita").Value),
                          varAliquotaIVA = x.Element("AliquotaIVA").Value


                      };

            return results.ToList();

    }
0
ответ дан Stefano Rosso 27 February 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: