簡體   English   中英

將Xml文件拆分為多個部分

[英]Split Xml File into multiple parts

我想將以下xml文件分為4個單獨的部分(我需要放置鏈接,因為鏈接很長,無法在此處發布:

https://www.dropbox.com/s/dzqyab0wewpuf5t/1547917556__0__qti_166292.xml?dl=0

我想了解以下部分:第1部分:




<!DOCTYPE questestinterop SYSTEM "ims_qtiasiv1p2p1.dtd">

<!--Generated by ILIAS XmlWriter-->

<questestinterop>


<item title="titel" maxattempts="0" ident="il_0_qst_152800">

<qticomment>beschreibung</qticomment>

<duration>P0Y0M0DT0H1M0S</duration>


<itemmetadata>


<qtimetadata>


<qtimetadatafield>

<fieldlabel>ILIAS_VERSION</fieldlabel>

<fieldentry>5.3.8 2018-08-29</fieldentry>

</qtimetadatafield>


<qtimetadatafield>

<fieldlabel>QUESTIONTYPE</fieldlabel>

<fieldentry>CLOZE QUESTION</fieldentry>

</qtimetadatafield>


<qtimetadatafield>

<fieldlabel>AUTHOR</fieldlabel>

<fieldentry>Patrick Maik Mächler</fieldentry>

</qtimetadatafield>


<qtimetadatafield>

<fieldlabel>additional_cont_edit_mode</fieldlabel>

<fieldentry>default</fieldentry>

</qtimetadatafield>


<qtimetadatafield>

<fieldlabel>externalId</fieldlabel>

<fieldentry>5c3f83ce4b6880.97213190</fieldentry>

</qtimetadatafield>


<qtimetadatafield>

<fieldlabel>textgaprating</fieldlabel>

<fieldentry>ci</fieldentry>

</qtimetadatafield>


<qtimetadatafield>

<fieldlabel>fixedTextLength</fieldlabel>

<fieldentry>1</fieldentry>

</qtimetadatafield>


<qtimetadatafield>

<fieldlabel>identicalScoring</fieldlabel>

<fieldentry>1</fieldentry>

</qtimetadatafield>


<qtimetadatafield>

<fieldlabel>combinations</fieldlabel>

<fieldentry>W10=</fieldentry>

</qtimetadatafield>

</qtimetadata>

</itemmetadata>


<presentation label="titel">


<flow>


<material>

<mattext texttype="text/xhtml"><p>text1</p> <div id="OKAYFREEDOM_INJECTED" style="display: none;"></div></mattext>

</material>


<material>

<mattext texttype="text/xhtml"><p></p> <p>text2</p> <p></p> <p>auswahllücke</mattext>

</material>

第2部分 :

<response_str ident="gap_0" rcardinality="Single">


<render_choice shuffle="No">


<response_label ident="0">


<material>

<mattext>auswahl1</mattext>

</material>

</response_label>


<response_label ident="1">


<material>

<mattext>auswahl2</mattext>

</material>

</response_label>

</render_choice>

</response_str>


<material>

<mattext texttype="text/plain">textlücke</mattext>

</material>


<response_str ident="gap_1" rcardinality="Single">

<render_fib maxchars="2" columns="8" prompt="Box" fibtype="String"/>

</response_str>


<material>

<mattext texttype="text/plain">numlücke</mattext>

</material>


<response_num ident="gap_2" rcardinality="Single" numtype="Decimal">

<render_fib maxchars="3" columns="2" prompt="Box" fibtype="Decimal" maxnumber="100" minnumber="1"/>

</response_num>


<material>

<mattext texttype="text/xhtml"></p> <p></p> <div></div> <p></p> <div></div> <div></div></mattext>

</material>

</flow>

</presentation>

第3部分:

<resprocessing>


<outcomes>

<decvar/>

</outcomes>


<respcondition continue="Yes">


<conditionvar>

<varequal respident="gap_0">auswahl1</varequal>

</conditionvar>

<setvar action="Add">1</setvar>

<displayfeedback linkrefid="0_Response_0" feedbacktype="Response"/>

</respcondition>


<respcondition continue="Yes">


<conditionvar>

<varequal respident="gap_0">auswahl2</varequal>

</conditionvar>

<setvar action="Add">2</setvar>

<displayfeedback linkrefid="0_Response_1" feedbacktype="Response"/>

</respcondition>


<respcondition continue="Yes">


<conditionvar>

<varequal respident="gap_1">antwort1</varequal>

</conditionvar>

<setvar action="Add">3</setvar>

<displayfeedback linkrefid="1_Response_0" feedbacktype="Response"/>

</respcondition>


<respcondition continue="Yes">


<conditionvar>

<varequal respident="gap_1">antwort2</varequal>

</conditionvar>

<setvar action="Add">4</setvar>

<displayfeedback linkrefid="1_Response_1" feedbacktype="Response"/>

</respcondition>


<respcondition continue="Yes">


<conditionvar>

<varequal respident="gap_2">99</varequal>

</conditionvar>

<setvar action="Add">5</setvar>

<displayfeedback linkrefid="2_Response_0" feedbacktype="Response"/>

</respcondition>

第4部分:

<itemfeedback ident="response_onenotcorrect" view="All">


<flow_mat>


<material>

<mattext texttype="text/xhtml"><p>respnotcorrect</p> <div id="OKAYFREEDOM_INJECTED" style="display: none;"></div></mattext>

</material>

</flow_mat>

</itemfeedback>

我不需要的部分,我只需要xml文件的這4部分。 我該如何輕松拆分? 有些元素被多次命名。

我將使用XMLDocument讀取器/寫入器。 您可以在內存中操縱所需的元素。

可以在該主題上找到大量文檔,例如: 使用xmldocument讀取xml

您僅在鏈接上發布了第1部分。 下面我使用xml linq來獲取元素。 如果文件很大,則還需要使用xmlreader

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";

        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            XElement resprocessing = doc.Descendants("resprocessing").FirstOrDefault();

            string header = "<?xml version=\"1.0\" encoding=\"utf-8\"?><resprocessing></resprocessing>";
            XDocument newDoc = XDocument.Parse(header);
            XElement newResprocessing = newDoc.Root;
            newResprocessing.ReplaceWith(resprocessing);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM