<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>XER on File Format Blog</title>
    <link>https://blog.fileformat.com/tr/tag/xer/</link>
    <description>Recent content in XER on File Format Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>tr</language><atom:link href="https://blog.fileformat.com/tr/tag/xer/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MS Project MPP ve Primavera XER Dosyalarını Ayrıştırmak İçin En İyi Açık Kaynak API&#39;leri</title>
      <link>https://blog.fileformat.com/tr/project-management/top-open-source-apis-for-handling-ms-project-mpp-&amp;-primavera-XER-files/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://blog.fileformat.com/tr/project-management/top-open-source-apis-for-handling-ms-project-mpp-&amp;-primavera-XER-files/</guid>
      <description>Microsoft Project MPP ve Primavera XER takvimlerini okumak için açık kaynak araçlar mı arıyorsunuz? Java, Python ve .NET için MPXJ ve xerparser gibi önde gelen kütüphaneleri keşfedin.</description>
      <content:encoded><![CDATA[<p><strong>Son Güncelleme</strong>: 02 Eyl, 2026</p>
<figure class="align-center ">
    <img loading="lazy" src="images/top-open-source-apis-for-handling-ms-project-mpp-&amp;-primavera-XER-files.jpg#center"
         alt="Best Open Source APIs for Parsing MS Project MPP &amp; Primavera XER Files"/> 
</figure>

<h2 id="ms-project-mpp7-ve-primavera-xer9-dosyalarıyla-çalışmak-için-önde-gelen-açık-kaynak-apileri">MS Project (<a href="https://wiki.fileformat.com/project-management/mpp/">MPP</a>) ve Primavera (<a href="https://docs.fileformat.com/project-management/xer/">XER</a>) Dosyalarıyla Çalışmak İçin Önde Gelen Açık Kaynak API&rsquo;leri</h2>
<p>Kurumsal proje yönetiminde, iki özel dosya formatı hâkimdir: <strong>Microsoft Project (<code>.mpp</code>)</strong> ve <strong>Oracle Primavera P6 (<code>.xer</code>)</strong>. İç analiz panosu oluşturuyor, inşaat takvimlerini ERP sistemleriyle senkronize ediyor ya da proje durumu boru hatlarını otomatikleştiriyor olun, bu zamanlama dosyalarını programlı olarak okumak ve manipüle etmek kritik bir gereksinimdir.</p>
<p>Ancak, her iki format da kötü şöhretli mühendislik engelleri oluşturur:</p>
<ul>
<li><strong>MPP files</strong> ikili, belgelenmemiş OLE Structured Storage veya özel birleşik belge formatlarıdır; şema değişiklikleri neredeyse tüm büyük MS Project sürümlerinde (2000, 2003, 2007, 2010, 2013, 2016, 2019, 2021) gerçekleşir.</li>
<li><strong>Primavera XER files</strong> sekme ile ayrılmış metin dışa aktarımlarıdır; ilişkisel veritabanı tabloları (<code>%T</code> tabloları, <code>%F</code> alanları ve <code>%R</code> kayıtları) şeklinde yapılandırılmış, karmaşık referans bütünlüğü kısıtlamaları, çok takvim kalıtımı ve kritik yol mantığıyla doludur.</li>
</ul>
<p>Aspose.Tasks gibi ticari SDK&rsquo;lar mevcuttur, ancak lisans maliyetleri ve satıcı bağımlılığı, sağlam açık kaynak alternatiflerini gerekli kılar. Bu rehberde, MPP ve XER dosyalarını temiz ve verimli bir şekilde işlemek için Java, Python ve C#&lsquo;da mevcut olan en iyi açık kaynak API&rsquo;leri, kütüphaneleri ve ayrıştırıcıları inceleyeceğiz.</p>
<h2 id="açık-kaynak-araçların-hızlı-karşılaştırması">Açık Kaynak Araçların Hızlı Karşılaştırması</h2>
<table>
<thead>
<tr>
<th style="text-align:left">Kütüphane / Araç</th>
<th style="text-align:left">Ana Dil</th>
<th style="text-align:left">Desteklenen Formatlar</th>
<th style="text-align:left">Okuma / Yazma</th>
<th style="text-align:left">En İyi Kullanım Durumu</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><strong>MPXJ</strong></td>
<td style="text-align:left">Java (Python / .NET bağlamaları)</td>
<td style="text-align:left"><a href="https://wiki.fileformat.com/project-management/mpp/">MPP</a>, <a href="https://docs.fileformat.com/project-management/mpt/">MPT</a>, <a href="https://docs.fileformat.com/project-management/mpx/">MPX</a>, <a href="https://docs.fileformat.com/project-management/xer/">XER</a>, PMXML, MSPDI</td>
<td style="text-align:left">Okuma (MPP/XER); Yazma (MPX/MSPDI/PMXML)</td>
<td style="text-align:left">Kurumsal Java, çoklu format dönüşümü, hepsi bir arada takvimler</td>
</tr>
<tr>
<td style="text-align:left"><strong>xerparser</strong></td>
<td style="text-align:left">Python</td>
<td style="text-align:left">XER</td>
<td style="text-align:left">Oku ve Ayrıştır</td>
<td style="text-align:left">Veri bilimi, pandas zamanlama analizi, ETL boru hatları</td>
</tr>
<tr>
<td style="text-align:left"><strong>python-mpxj</strong></td>
<td style="text-align:left">Python</td>
<td style="text-align:left">MPP, XER, XML</td>
<td style="text-align:left">Oku / Dönüştür</td>
<td style="text-align:left">JPype kullanarak MPXJ etrafında Pythonic sarmalayıcı</td>
</tr>
<tr>
<td style="text-align:left"><strong>netezza-xer / xer-to-csv</strong></td>
<td style="text-align:left">Shell / Python / Go</td>
<td style="text-align:left">XER</td>
<td style="text-align:left">Akış / Dışa Aktar</td>
<td style="text-align:left">Ham SQL-benzeri tabloları ilişkisel veritabanlarına çıkarmak</td>
</tr>
<tr>
<td style="text-align:left"><strong>OpenProj / ProjectLibre Core</strong></td>
<td style="text-align:left">Java</td>
<td style="text-align:left">MPP (eski sürümler), XML</td>
<td style="text-align:left">Oku / İşle</td>
<td style="text-align:left">Masaüstü/Motor entegrasyonu temel Gantt görünümleri için</td>
</tr>
</tbody>
</table>
<h2 id="1-mpxj11-javada-microsoft-project-exchange">1. <a href="https://products.fileformat.com/project-management/java/mpxj/">MPXJ</a> (Java&rsquo;da Microsoft Project eXchange)</h2>
<h3 id="programlama-takvimi-uyumluluğu-için-tartışmasız-endüstri-standardı"><em>Programlama Takvimi Uyumluluğu için Tartışmasız Endüstri Standardı</em></h3>
<p>Açık kaynak zamanlama kütüphanelerinde bir altın standart varsa, o <strong>MPXJ</strong>&lsquo;dir. Jon Iles tarafından yirmi yıldan fazla süredir aktif olarak sürdürülen MPXJ, başlangıçta Microsoft Project MPX dosyalarını işlemek için oluşturulmuş, ancak proje zamanlama formatları için evrensel bir çeviri motoruna dönüşmüştür.</p>
<h4 id="ana-özellikler">Ana Özellikler</h4>
<ul>
<li><strong>Doğrudan MPP Çıkarma:</strong> Microsoft Project&rsquo;in neredeyse tüm sürümlerinde (Project 98&rsquo;den modern Project 2016/2019/2021/365&rsquo;e) kurulu bir Microsoft Project kopyası gerektirmeden özel ikili MPP dosyalarını ayrıştırır.</li>
<li><strong>Primavera P6 XER &amp; PMXML Ayrıştırma:</strong> Hem metin tabanlı <code>.xer</code> dökümleri hem de modern Primavera XML dosyaları için yerel destek.</li>
<li><strong>Normalleştirilmiş Veri Modeli:</strong> Tek bir nesne modeli (<code>ProjectFile</code>, <code>Task</code>, <code>Resource</code>, <code>ResourceAssignment</code>, <code>Relation</code>, <code>WorkCalendar</code>) sunar. Girişiniz MPP ya da XER olsun, uygulama kodunuz aynı API ile etkileşir.</li>
<li><strong>Çok Dilli Dağıtım:</strong> Java&rsquo;da yazılmış olmasına rağmen, MPXJ IKVM/CoreCLR aracılığıyla <strong>.NET (C#)</strong> için yerel derlenmiş NuGet paketleri ve ayrıca bir <strong>Python</strong> paketi (<code>mpxj</code> PyPI&rsquo;de) dağıtır.</li>
</ul>
<h4 id="hızlı-kod-örneği-java">Hızlı Kod Örneği: Java</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#f92672">import</span> net.sf.mpxj.ProjectFile<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> net.sf.mpxj.Task<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> net.sf.mpxj.reader.UniversalProjectReader<span style="color:#f92672">;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">public</span> <span style="color:#66d9ef">class</span> <span style="color:#a6e22e">ScheduleReader</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">public</span> <span style="color:#66d9ef">static</span> <span style="color:#66d9ef">void</span> <span style="color:#a6e22e">main</span><span style="color:#f92672">(</span>String<span style="color:#f92672">[]</span> args<span style="color:#f92672">)</span> <span style="color:#66d9ef">throws</span> Exception <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>        <span style="color:#75715e">// UniversalProjectReader automatically detects whether it&#39;s MPP, XER, or XML
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>        UniversalProjectReader reader <span style="color:#f92672">=</span> <span style="color:#66d9ef">new</span> UniversalProjectReader<span style="color:#f92672">();</span>
</span></span><span style="display:flex;"><span>        ProjectFile project <span style="color:#f92672">=</span> reader<span style="color:#f92672">.</span><span style="color:#a6e22e">read</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;capital_project_schedule.xer&#34;</span><span style="color:#f92672">);</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        System<span style="color:#f92672">.</span><span style="color:#a6e22e">out</span><span style="color:#f92672">.</span><span style="color:#a6e22e">println</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Project Name: &#34;</span> <span style="color:#f92672">+</span> project<span style="color:#f92672">.</span><span style="color:#a6e22e">getProjectProperties</span><span style="color:#f92672">().</span><span style="color:#a6e22e">getProjectTitle</span><span style="color:#f92672">());</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">for</span> <span style="color:#f92672">(</span>Task task <span style="color:#f92672">:</span> project<span style="color:#f92672">.</span><span style="color:#a6e22e">getTasks</span><span style="color:#f92672">())</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>            <span style="color:#66d9ef">if</span> <span style="color:#f92672">(</span>task<span style="color:#f92672">.</span><span style="color:#a6e22e">getName</span><span style="color:#f92672">()</span> <span style="color:#f92672">!=</span> <span style="color:#66d9ef">null</span><span style="color:#f92672">)</span> <span style="color:#f92672">{</span>
</span></span><span style="display:flex;"><span>                System<span style="color:#f92672">.</span><span style="color:#a6e22e">out</span><span style="color:#f92672">.</span><span style="color:#a6e22e">printf</span><span style="color:#f92672">(</span><span style="color:#e6db74">&#34;Task ID: %d | WBS: %s | Name: %s | Early Start: %s%n&#34;</span><span style="color:#f92672">,</span>
</span></span><span style="display:flex;"><span>                    task<span style="color:#f92672">.</span><span style="color:#a6e22e">getID</span><span style="color:#f92672">(),</span> task<span style="color:#f92672">.</span><span style="color:#a6e22e">getWBS</span><span style="color:#f92672">(),</span> task<span style="color:#f92672">.</span><span style="color:#a6e22e">getName</span><span style="color:#f92672">(),</span> task<span style="color:#f92672">.</span><span style="color:#a6e22e">getEarlyStart</span><span style="color:#f92672">());</span>
</span></span><span style="display:flex;"><span>            <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>        <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>    <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">}</span>
</span></span></code></pre></div><h4 id="mpxjnin-üstün-olduğu-alanlar">MPXJ&rsquo;nin Üstün Olduğu Alanlar</h4>
<ul>
<li>Gerçek çapraz format normalizasyonu (MPP&rsquo;yi XER uyumlu PMXML veya MSPDI&rsquo;ye dönüştürme).</li>
<li>Karmaşık takvim mantığı (vardiyalar, istisnalar, çoklu takvim çalışma saatleri).</li>
<li>Üretim seviyesinde kararlılık ve aktif bir topluluk.</li>
</ul>
<h2 id="2-xerparser12-python">2. <a href="https://github.com/jjCode01/xerparser">xerparser</a> (Python)</h2>
<h3 id="primavera-xer-için-hafif-yerel-python-ayrıştırması"><em>Primavera XER için Hafif, Yerel Python Ayrıştırması</em></h3>
<p>MPXJ Python bağlamaları aracılığıyla çağrılabilir, ancak bu, bir JVM arka ucunu (JPype aracılığıyla) çalıştırmayı gerektirir. Java bağımlılıkları olmadan çalışan tamamen yerel bir Python ayrıştırıcıya ihtiyacınız olduğunda, <strong><code>xerparser</code></strong> tercih edilen çözümdür.</p>
<p>XER dosyası temelde bir veritabanı anlık görüntüsünün düz metne dökülmüş halidir. <code>xerparser</code> bu tabloları yapılandırılmış Python nesnelerine çözer ve <code>pandas</code> ile sorunsuz bir şekilde bütünleşir.</p>
<h4 id="ana-özellikler-1">Ana Özellikler</h4>
<ul>
<li><strong>Sıfır Java Bağımlılığı:</strong> <code>pip install xerparser</code> ile kurulabilen saf Python 3 kütüphanesi.</li>
<li><strong>İlişkisel Bütünlük:</strong> <code>TASK</code> (Aktiviteler), <code>PROJECT</code> (Proje meta verileri), <code>PROJWBS</code> (WBS hiyerarşileri), <code>TASKRSRC</code> (Atamalar) ve <code>TASKPRED</code> (Mantık bağları) gibi temel Primavera tablolarını eşler.</li>
<li><strong>Hızlı Çalıştırma:</strong> Konteynerleştirilmiş mikro hizmetler, AWS Lambda fonksiyonları ve modern veri orkestrasyon hatları (ör. Apache Airflow, Prefect) için idealdir.</li>
</ul>
<h4 id="hızlı-kod-örneği-python">Hızlı Kod Örneği: Python</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> xerparser.reader <span style="color:#f92672">import</span> Reader
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> pandas <span style="color:#66d9ef">as</span> pd
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Load XER file</span>
</span></span><span style="display:flex;"><span>xer <span style="color:#f92672">=</span> Reader(<span style="color:#e6db74">&#34;plant_expansion.xer&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Access projects inside the XER dump</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> project <span style="color:#f92672">in</span> xer<span style="color:#f92672">.</span>projects:
</span></span><span style="display:flex;"><span>    print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;Project Code: </span><span style="color:#e6db74">{</span>project<span style="color:#f92672">.</span>short_name<span style="color:#e6db74">}</span><span style="color:#e6db74">, Description: </span><span style="color:#e6db74">{</span>project<span style="color:#f92672">.</span>name<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># Convert activities into a Pandas DataFrame for downstream analytics</span>
</span></span><span style="display:flex;"><span>tasks_data <span style="color:#f92672">=</span> []
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> act <span style="color:#f92672">in</span> xer<span style="color:#f92672">.</span>activities:
</span></span><span style="display:flex;"><span>    tasks_data<span style="color:#f92672">.</span>append({
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;Task_Code&#34;</span>: act<span style="color:#f92672">.</span>task_code,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;Name&#34;</span>: act<span style="color:#f92672">.</span>task_name,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;Status&#34;</span>: act<span style="color:#f92672">.</span>status_code,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;Early_Start&#34;</span>: act<span style="color:#f92672">.</span>early_start_date,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;Early_Finish&#34;</span>: act<span style="color:#f92672">.</span>early_end_date,
</span></span><span style="display:flex;"><span>        <span style="color:#e6db74">&#34;Total_Float&#34;</span>: act<span style="color:#f92672">.</span>total_float_hr_cnt
</span></span><span style="display:flex;"><span>    })
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>df <span style="color:#f92672">=</span> pd<span style="color:#f92672">.</span>DataFrame(tasks_data)
</span></span><span style="display:flex;"><span>print(df<span style="color:#f92672">.</span>head())
</span></span></code></pre></div><h4 id="xerparserın-üstün-olduğu-alanlar">xerparser&rsquo;ın Üstün Olduğu Alanlar</h4>
<ul>
<li>Veri mühendisliği, gecikme-iddia analizleri ve program sağlık kontrolleri (DCMA 14 noktalı değerlendirme betikleri).</li>
<li>Java çalışma zamanının 50 MB+ paketlenmesinin pratik olmadığı sunucusuz iş yükleri.</li>
</ul>
<h2 id="3-python-mpxj">3. python-mpxj</h2>
<h3 id="pythonu-mpxjin-tam-gücüyle-birleştirmek"><em>Python&rsquo;u MPXJ&rsquo;in Tam Gücüyle Birleştirmek</em></h3>
<p>Python&rsquo;da çalışıyorsanız ancak ikili <code>.mpp</code> dosyalarını <strong>işlemek zorundaysanız</strong>, <code>xerparser</code> size yardımcı olamaz çünkü yalnızca <code>.xer</code> hedef alır. En güvenilir açık kaynak köprü <strong><code>python-mpxj</code></strong>&lsquo;dir.</p>
<h4 id="ana-özellikler-2">Ana Özellikler</h4>
<ul>
<li><code>jpype1</code> kullanarak otomatik olarak başsız gömülü bir JVM başlatır.</li>
<li>Tam MPXJ API&rsquo;sını doğrudan Python geliştiricilerine sunar.</li>
<li>Sahipli <code>.mpp</code> dosyalarından <code>.json</code> veya <code>.csv</code> gibi modern açık formatlara doğrudan dönüşüm sağlar.</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>pip install mpxj
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">import</span> mpxj
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># MPXJ provides high-level helper utilities</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">from</span> net.sf.mpxj.reader <span style="color:#f92672">import</span> UniversalProjectReader
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>reader <span style="color:#f92672">=</span> UniversalProjectReader()
</span></span><span style="display:flex;"><span>project <span style="color:#f92672">=</span> reader<span style="color:#f92672">.</span>read(<span style="color:#e6db74">&#34;commercial_tower.mpp&#34;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> task <span style="color:#f92672">in</span> project<span style="color:#f92672">.</span>getTasks():
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span> task<span style="color:#f92672">.</span>getName():
</span></span><span style="display:flex;"><span>        print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#34;</span><span style="color:#e6db74">{</span>task<span style="color:#f92672">.</span>getUniqueID()<span style="color:#e6db74">}</span><span style="color:#e6db74">: </span><span style="color:#e6db74">{</span>task<span style="color:#f92672">.</span>getName()<span style="color:#e6db74">}</span><span style="color:#e6db74"> -&gt; </span><span style="color:#e6db74">{</span>task<span style="color:#f92672">.</span>getDuration()<span style="color:#e6db74">}</span><span style="color:#e6db74">&#34;</span>)
</span></span></code></pre></div><h2 id="4-özel-ayrıştırma-yardımcı-programları-ve-veritabanı-alım-betikleri">4. Özel Ayrıştırma Yardımcı Programları ve Veritabanı Alım Betikleri</h2>
<h3 id="ham-primavera-xeri-akış-işleme-ile-işlemek"><em>Ham Primavera XER&rsquo;i Akış İşleme ile İşlemek</em></h3>
<p>Primavera XER, öngörülebilir bir tablo formatını izlediği için, birçok açık kaynak mühendislik ekibi yüksek seviyeli DOM tarzı program kütüphaneleri yerine (Go, Python veya Rust ile yazılmış) özel tablo akışı çözücüleri kullanır.</p>
<p>Bir XER dosya yapısı şu şekilde biçimlendirilir:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>%T  TASK
</span></span><span style="display:flex;"><span>%F  task_id  proj_id  wbs_id  task_code  task_name  status_code
</span></span><span style="display:flex;"><span>%R  10182    120      45      A1000      Mobilization TK_Complete
</span></span><span style="display:flex;"><span>%R  10183    120      45      A1010      Excavation   TK_Active
</span></span><span style="display:flex;"><span>%E
</span></span></code></pre></div><p>GitHub&rsquo;da bulunan çeşitli açık kaynak kodlu betikler (örneğin <code>xer2sqlite</code> ve <code>xer-to-csv</code>) bu yapıyı doğrudan SQLite veya PostgreSQL&rsquo;e ayrıştırır. Bu yaklaşım aşağıdaki durumlarda en iyisidir:</p>
<ol>
<li>Yalnızca SQL ile tablo ilişkilerini sorgulamanız gerekir.</li>
<li>Takvimler, on binlerce görev içeren ve boyutu yüzlerce megabayt olan, nesne yönelimli ağaç yükleyicilerin bellek yetersizliği hatalarına yol açacağı durumlarda.</li>
</ol>
<h2 id="teknik-karşılaştırma-hangisini-seçmelisiniz">Teknik Karşılaştırma: Hangisini Seçmelisiniz?</h2>
<h3 id="mpxjyi-şu-durumda-seçin">MPXJ&rsquo;yi Şu Durumda Seçin:</h3>
<ul>
<li>Sahip olduğunuz tescilli ticari yazılımlara para ödemeden ikili <strong>Microsoft Project <code>.mpp</code></strong> dosyalarını okumalısınız.</li>
<li>Derin takvim zekâsına ihtiyacınız var: çalışma takvimleri, gecikme süresi hesaplamaları, kritik yol hesaplaması ve temel varyans.</li>
<li>Teknoloji yığını <strong>Java</strong>, <strong>Kotlin</strong>, <strong>C# (.NET)</strong> veya kurumsal Python&rsquo;dur.</li>
</ul>
<h3 id="xerparserı-şu-durumda-seçin">xerparser&rsquo;ı Şu Durumda Seçin:</h3>
<ul>
<li>Yalnızca <strong>Primavera P6 <code>.xer</code></strong> dosyalarını işlersiniz.</li>
<li>Veri hattınız <strong>yerel Python</strong> ile yazılmıştır ve doğrudan pandas, NumPy veya Dash / Streamlit gibi görselleştiricilere beslenir.</li>
<li>Hafif konteyner ortamlarına veya sunucusuz bulut çalıştırıcılarına dağıtım yapıyorsunuz.</li>
</ul>
<h3 id="doğrudan-db--csv-akışı-alımını-şu-durumda-seçin">Doğrudan DB / CSV Akışı Alımını Şu Durumda Seçin:</h3>
<ul>
<li>Büyük çoklu proje kurumsal XER ihracatları için yüksek verimli veritabanı hazırlığına ihtiyacınız var.</li>
<li>Yalnızca meta verileri, maliyet hesaplarını ve ilerleme eğrilerini SQL analitiğiyle çıkarmanız gerekir.</li>
</ul>
<h2 id="özet-ve-en-iyi-uygulamalar">Özet ve En İyi Uygulamalar</h2>
<p>Zaman çizelgesi verileri için açık kaynaklı veri hatları oluştururken:</p>
<ol>
<li><strong><code>.mpp</code> dosyasını asla manuel olarak ayrıştırmayın:</strong> Microsoft ikili spesifikasyonu karmaşık ve belgelenmemiştir. Her zaman <strong>MPXJ</strong> gibi kanıtlanmış kütüphanelere güvenin.</li>
<li><strong>Tarih Zaman Dilimlerine Dikkat Edin:</strong> Primavera zaman çizelgeleri genellikle zaman dilimi meta verisi olmadan iş sürelerini kaydeder ve proje takvimlerine dayanır. Veri alma hattınızın 8 saatlik iş günü kaymalarını 24 saatlik takvim günlerine karşı hesaba kattığından emin olun.</li>
<li><strong>Referans Bütünlüğünü Doğrulayın:</strong> XER dosyalarında, el ile oluşturulan proje ihracatlarında sıkça yetim kayıtlar (ör. silinmiş WBS düğümlerine işaret eden görevler) bulunur. ETL sırasında her zaman dış anahtarları savunmacı bir şekilde doğrulayın.</li>
</ol>
<h2 id="sss">SSS</h2>
<p>**Q1: 1.	Açık kaynaklı kütüphaneler yerel ikili .mpp dosyalarını doğrudan yazabilir veya güncelleyebilir mi?</p>
<p><strong>A1:</strong> Hayır, Microsoft&rsquo;un tescilli ikili formatı nedeniyle, açık kaynak kütüphaneler .mpp dosyalarını güvenilir bir şekilde okuyabilir, ancak yazma işlemleri genellikle MSPDI (XML) veya MPX gibi standart formatlara dışa aktarılır.</p>
<p>**Q2: Bu dosyaları ayrıştırmak için sunucuma Microsoft Project veya Primavera P6 kurulu olması gerekiyor mu?</p>
<p><strong>A2:</strong>  Hayır, MPXJ ve xerparser gibi kütüphaneler, ana yazılım lisansları gerektirmeden dosyaları doğrudan işleyen bağımsız ayrıştırıcılardır.</p>
<p>**Q3: Java bağımlılıkları olmadan Primavera P6 XER dosyalarını ayrıştırmak için en iyi yerel Python kütüphanesi hangisidir?</p>
<p><strong>A3:</strong> xerparser, XER dökümlerini doğrudan yerel sözlükler ve pandas DataFrame&rsquo;lerine ayrıştırmak için en iyi saf-Python seçeneğidir.</p>
<p>**Q4: MPXJ, Microsoft Project MPP dosyalarını Primavera P6 formatlarına dönüştürebilir mi?</p>
<p><strong>A4:</strong> Evet, MPXJ bir .mpp dosyasını okuyabilir ve normalleştirilmiş takvimi Primavera uyumlu PMXML formatına dışa aktarabilir.</p>
<p>**Q5: Primavera XER dosyaları, Microsoft Project MPP dosyalarına göre neden daha kolay ayrıştırılır?</p>
<p><strong>A5:</strong> XER dosyaları insan tarafından okunabilir, sekme ile ayrılmış ilişkisel veritabanı dökümleridir, oysa MPP dosyaları tescilli, ikili birleşik belge yapılarıdır.</p>
<h2 id="dosya-formatı-kaynakları">Dosya Formatı Kaynakları</h2>
<p><a href="https://news.fileformat.com/"><strong>Dosya Formatı Haberleri</strong></a> – Dünya çapında dosya formatlarıyla ilgili tüm haberler için tek durak <a href="https://forum.fileformat.com/"><strong>Dosya Formatı Forumları</strong></a> – Dosya formatı forumlarında sorularınızı göndererek dosya formatı uzmanlarından ve topluluk kullanıcılarından faydalı bilgiler alın <a href="https://wiki.fileformat.com/"><strong>Dosya Formatı Wiki</strong></a> – Çeşitli dosya formatları hakkında bilgi edinmek için dosya formatı kategorilerini keşfedin <a href="https://products.fileformat.com/project-management/"><strong>Açık Kaynak API&rsquo;leri ve Kütüphaneleri</strong> Proje Yönetimi için</a></p>
<!-- raw HTML omitted -->
]]></content:encoded>
    </item>
    
  </channel>
</rss>
