<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Change Level Type in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/change-level-type/m-p/13246608#M1586</link>
    <description>&lt;P&gt;thank you for your explanation &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 07 Jan 2025 03:27:28 GMT</pubDate>
    <dc:creator>marcintromski</dc:creator>
    <dc:date>2025-01-07T03:27:28Z</dc:date>
    <item>
      <title>Change Level Type</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/change-level-type/m-p/13244989#M1584</link>
      <description>&lt;P&gt;hello im trying to change Type of level. but my code is not working properly. Maybe someone could look at my code and tell me whats wrong? Im beginner to revit api.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Level levelToCheckBy = document.GetElementByName&amp;lt;Level&amp;gt;("Level 1");&lt;BR /&gt;var walls = document.GetElementsByType&amp;lt;Wall&amp;gt;()&lt;BR /&gt;.Where(w =&amp;gt; !w.IsCurtain())&lt;BR /&gt;.Where(w =&amp;gt;&lt;BR /&gt;w.get_Parameter(BuiltInParameter.WALL_BASE_CONSTRAINT).AsElementId() == levelToCheckBy.Id &amp;amp;&amp;amp;&lt;BR /&gt;w.get_Parameter(BuiltInParameter.WALL_BASE_OFFSET).AsDouble() &amp;gt; 1 &amp;amp;&amp;amp;&lt;BR /&gt;w.WallType.get_Parameter(BuiltInParameter.ALL_MODEL_DESCRIPTION).AsString() == "TheOne")&lt;BR /&gt;.ToList();&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;// exercise 2&lt;/P&gt;&lt;P&gt;List&amp;lt;WallType&amp;gt; wallTypes = new List&amp;lt;WallType&amp;gt;();&lt;BR /&gt;foreach (var wall in walls)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;wallTypes.Add(wall.WallType);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;List&amp;lt;WallType&amp;gt; newWallTypes = new FilteredElementCollector(document)&lt;BR /&gt;.OfCategory(BuiltInCategory.OST_Walls)&lt;BR /&gt;.WhereElementIsElementType()&lt;BR /&gt;.Cast&amp;lt;WallType&amp;gt;()&lt;BR /&gt;.ToList();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;List&amp;lt;WallType&amp;gt; resultWallTypes = wallTypes.Except(newWallTypes).ToList();&lt;/P&gt;&lt;P&gt;List&amp;lt;Wall&amp;gt; walls2 = new List&amp;lt;Wall&amp;gt;();&lt;BR /&gt;List&amp;lt;ElementId&amp;gt; ids = new List&amp;lt;ElementId&amp;gt;();&lt;BR /&gt;foreach (WallType resultWallType in resultWallTypes)&lt;BR /&gt;{&lt;BR /&gt;ids.Add(resultWallType.Id);&lt;BR /&gt;walls2 = new FilteredElementCollector(document)&lt;BR /&gt;.OfCategory(BuiltInCategory.OST_Walls)&lt;BR /&gt;.WhereElementIsNotElementType()&lt;BR /&gt;.Cast&amp;lt;Wall&amp;gt;()&lt;BR /&gt;.Where(x =&amp;gt; x.GetTypeId() == resultWallType.Id)&lt;BR /&gt;.ToList();&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;foreach (var wallInstance in walls2)&lt;BR /&gt;{&lt;BR /&gt;TaskDialog.Show("da", wallInstance.Name.ToString() +&lt;BR /&gt;" " + walls2.Count().ToString());&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;string levelTypeName = "CustomLevelType";&lt;BR /&gt;LevelType levelType = new FilteredElementCollector(document)&lt;BR /&gt;.OfCategory(BuiltInCategory.OST_Levels)&lt;BR /&gt;.WhereElementIsElementType()&lt;BR /&gt;.Cast&amp;lt;LevelType&amp;gt;()&lt;BR /&gt;.FirstOrDefault(x =&amp;gt; x.Name == levelTypeName) as LevelType;&lt;/P&gt;&lt;P&gt;TaskDialog.Show("CustomLevelType", levelType.Name.ToString());&lt;BR /&gt;ElementId lvlElementId = levelType.Id;&lt;/P&gt;&lt;P&gt;TaskDialog.Show("customleveltypeID", lvlElementId.IntegerValue.ToString());&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;List&amp;lt;LevelType&amp;gt; existinglevelTypes = new FilteredElementCollector(document)&lt;BR /&gt;.OfCategory(BuiltInCategory.OST_Levels)&lt;BR /&gt;.WhereElementIsElementType()&lt;BR /&gt;.Cast&amp;lt;LevelType&amp;gt;()&lt;BR /&gt;.ToList();&lt;/P&gt;&lt;P&gt;foreach (LevelType existinglevelType in existinglevelTypes)&lt;BR /&gt;{&lt;BR /&gt;TaskDialog.Show("existinglevelType", existinglevelType.Name);&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Parameter para = existinglevelType.get_Parameter(BuiltInParameter.ELEM_TYPE_PARAM);&lt;/P&gt;&lt;P&gt;TaskDialog.Show("para", para.StorageType.ToString());&lt;BR /&gt;TaskDialog.Show("para", para.Definition.Name);&lt;BR /&gt;TaskDialog.Show("para", para.Id.ToString());&lt;BR /&gt;using (Transaction trans = new Transaction(document))&lt;BR /&gt;{&lt;BR /&gt;trans.Start("Set new type for level");&lt;BR /&gt;TaskDialog.Show("messgae", "Jestem w transakcji");&lt;BR /&gt;para.Set(lvlElementId);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;trans.Commit();&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Mon, 06 Jan 2025 11:08:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/change-level-type/m-p/13244989#M1584</guid>
      <dc:creator>marcintromski</dc:creator>
      <dc:date>2025-01-06T11:08:42Z</dc:date>
    </item>
    <item>
      <title>Re: Change Level Type</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/change-level-type/m-p/13245701#M1585</link>
      <description>&lt;P&gt;Welcome to the Revit API!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I asked Gemini for you: "how can i use the revit api to change the type of a level?"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I do not think that the code that it generated for this will work as is, but it gives some additional ideas and explanations that might help understand how to proceed.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It replied:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;DIV id="model-response-message-contentr_f461524df30acf04" class="markdown markdown-main-panel response-optimization stronger" dir="ltr"&gt;
&lt;DIV class="code-block ng-tns-c2805915660-19 ng-trigger ng-trigger-codeBlockRevealAnimation"&gt;
&lt;DIV class="code-block-decoration ng-tns-c2805915660-19 header-formatted gds-title-s ng-star-inserted"&gt;&lt;SPAN class="ng-tns-c2805915660-19"&gt;C#&lt;/SPAN&gt;
&lt;DIV class="buttons ng-tns-c2805915660-19 ng-star-inserted"&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="ng-tns-c2805915660-19 formatted-code-block-internal-container"&gt;
&lt;DIV class="animated-opacity ng-tns-c2805915660-19"&gt;
&lt;PRE class="ng-tns-c2805915660-19"&gt;&lt;CODE class="code-container ng-tns-c2805915660-19 formatted" role="text" data-test-id="code-content" data-sourcepos="1:1-67:1"&gt;&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-0"&gt;using&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-0"&gt; Autodesk.Revit.DB;
&lt;/SPAN&gt;&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-0"&gt;using&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-0"&gt; Autodesk.Revit.UI;
&lt;/SPAN&gt;&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-0"&gt;using&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-0"&gt; System;
&lt;/SPAN&gt;&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-0 citation-1"&gt;using&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-0 citation-1"&gt; System.Collections.Generic;
&lt;/SPAN&gt;&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-0 citation-1"&gt;using&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-0 citation-1"&gt; System.Linq;
&lt;/SPAN&gt;&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-0 citation-1"&gt;using&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-0 citation-1"&gt; System.Text;
&lt;/SPAN&gt;&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-0 citation-1"&gt;using&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-0 citation-1 citation-end-0"&gt; System.Threading.Tasks;&lt;/SPAN&gt;

&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-1"&gt;namespace&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-title"&gt;&lt;SPAN class="citation-1"&gt;RevitAddin&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-1"&gt;
{
    &lt;/SPAN&gt;&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-1"&gt;public&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;class&lt;/SPAN&gt; &lt;SPAN class="hljs-title"&gt;ChangeLevelType&lt;/SPAN&gt; : &lt;SPAN class="hljs-title"&gt;&lt;SPAN class="citation-2"&gt;IExternalCommand&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-2"&gt;
    {
        &lt;/SPAN&gt;&lt;SPAN class="hljs-function"&gt;&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-2"&gt;public&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-2"&gt; Result &lt;/SPAN&gt;&lt;SPAN class="hljs-title"&gt;&lt;SPAN class="citation-2"&gt;Execute&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-2"&gt;(&lt;/SPAN&gt;&lt;SPAN class="hljs-params"&gt;&lt;SPAN class="citation-2"&gt;
          ExternalCommandData commandData,
          &lt;/SPAN&gt;&lt;SPAN class="hljs-keyword"&gt;&lt;SPAN class="citation-2"&gt;ref&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-built_in"&gt;&lt;SPAN class="citation-2"&gt;string&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN class="citation-2 citation-3"&gt;message,
          ElementSet elements&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-2 citation-3"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class="citation-2 citation-3 citation-end-2"&gt;
        {
            UIDocument&lt;/SPAN&gt;&lt;SPAN class="citation-3"&gt; uidoc = commandData.Application.ActiveUIDocument;
            Document doc = uidoc.Document;

            &lt;/SPAN&gt;&lt;SPAN class="hljs-comment"&gt;&lt;SPAN class="citation-3 citation-end-3"&gt;// Get the&lt;/SPAN&gt; selected level&lt;/SPAN&gt;
            Level selectedLevel = uidoc.Selection.PickObject(ObjectType.Element, &lt;SPAN class="hljs-string"&gt;"Select a Level"&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;as&lt;/SPAN&gt; Level;
            &lt;SPAN class="hljs-keyword"&gt;if&lt;/SPAN&gt; (selectedLevel == &lt;SPAN class="hljs-literal"&gt;null&lt;/SPAN&gt;)
            {
                message = &lt;SPAN class="hljs-string"&gt;"No Level selected."&lt;/SPAN&gt;;
                &lt;SPAN class="hljs-keyword"&gt;return&lt;/SPAN&gt; Result.Failed;
            }

            &lt;SPAN class="hljs-comment"&gt;// Get all available level types&lt;/SPAN&gt;
            FilteredElementCollector collector = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; FilteredElementCollector(doc);
            collector.OfClass(&lt;SPAN class="hljs-keyword"&gt;typeof&lt;/SPAN&gt;(LevelType));
            List&amp;lt;LevelType&amp;gt; levelTypes = collector.ToList&amp;lt;LevelType&amp;gt;();

            &lt;SPAN class="hljs-comment"&gt;// Prompt the user to select a new level type&lt;/SPAN&gt;
            TaskDialog.Show(&lt;SPAN class="hljs-string"&gt;"Select Level Type"&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;"Choose a new level type for the selected level."&lt;/SPAN&gt;);
            LevelType newLevelType = &lt;SPAN class="hljs-literal"&gt;null&lt;/SPAN&gt;;
            &lt;SPAN class="hljs-keyword"&gt;while&lt;/SPAN&gt; (newLevelType == &lt;SPAN class="hljs-literal"&gt;null&lt;/SPAN&gt;)
            {
                &lt;SPAN class="hljs-keyword"&gt;try&lt;/SPAN&gt;
                {
                    &lt;SPAN class="hljs-built_in"&gt;string&lt;/SPAN&gt; selectedTypeName = TaskDialog.Show(&lt;SPAN class="hljs-string"&gt;"Select Level Type"&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;"Choose a new level type:"&lt;/SPAN&gt;, TaskDialogCommonButtons.Yes, TaskDialogCommonButtons.No, levelTypes.Select(lt =&amp;gt; lt.Name).ToArray());
                    &lt;SPAN class="hljs-keyword"&gt;if&lt;/SPAN&gt; (selectedTypeName != &lt;SPAN class="hljs-literal"&gt;null&lt;/SPAN&gt;)
                    {
                        newLevelType = levelTypes.FirstOrDefault(lt =&amp;gt; lt.Name == selectedTypeName);
                    }
                }
                catch (Exception ex)
                {
                    TaskDialog.Show(&lt;SPAN class="hljs-string"&gt;"Error"&lt;/SPAN&gt;, ex.Message);
                }
            }

            &lt;SPAN class="hljs-comment"&gt;// Change the level type&lt;/SPAN&gt;
            &lt;SPAN class="hljs-keyword"&gt;using&lt;/SPAN&gt; (Transaction t = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; Transaction(doc, &lt;SPAN class="hljs-string"&gt;"Change Level Type"&lt;/SPAN&gt;))
            {
                t.Start();
                Parameter param = selectedLevel.get_Parameter(BuiltInParameter.ELEM_TYPE_PARAM);
                param.Set(newLevelType.Id);
                t.Commit();
            }

            &lt;SPAN class="hljs-keyword"&gt;return&lt;/SPAN&gt; Result.Succeeded;
        }
    }
}
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P data-sourcepos="69:1-69:16"&gt;&lt;STRONG&gt;Explanation:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL data-sourcepos="71:1-84:0"&gt;
&lt;LI data-sourcepos="71:1-73:0"&gt;
&lt;P data-sourcepos="71:4-71:26"&gt;&lt;STRONG&gt;Get Selected Level:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-sourcepos="72:4-73:0"&gt;
&lt;LI data-sourcepos="72:4-73:0"&gt;The code starts by getting the selected level from the user using &lt;CODE&gt;uidoc.Selection.PickObject()&lt;/CODE&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-sourcepos="74:1-76:0"&gt;
&lt;P data-sourcepos="74:4-74:33"&gt;&lt;STRONG&gt;Get Available Level Types:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-sourcepos="75:4-76:0"&gt;
&lt;LI data-sourcepos="75:4-76:0"&gt;It then retrieves all available level types from the document using a &lt;CODE&gt;FilteredElementCollector&lt;/CODE&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-sourcepos="77:1-80:0"&gt;
&lt;P data-sourcepos="77:4-77:32"&gt;&lt;STRONG&gt;Prompt User for New Type:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-sourcepos="78:4-80:0"&gt;
&lt;LI data-sourcepos="78:4-78:99"&gt;The code presents a dialog box to the user, displaying the names of all available level types.&lt;/LI&gt;
&lt;LI data-sourcepos="79:4-80:0"&gt;The user is asked to select the desired level type.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-sourcepos="81:1-84:0"&gt;
&lt;P data-sourcepos="81:4-81:25"&gt;&lt;STRONG&gt;Change Level Type:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-sourcepos="82:4-84:0"&gt;
&lt;LI data-sourcepos="82:4-82:89"&gt;Inside a transaction, the code accesses the &lt;CODE&gt;ELEM_TYPE_PARAM&lt;/CODE&gt; of the selected level.&lt;/LI&gt;
&lt;LI data-sourcepos="83:4-84:0"&gt;It sets the value of this parameter to the &lt;CODE&gt;Id&lt;/CODE&gt; of the newly selected &lt;CODE&gt;LevelType&lt;/CODE&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-sourcepos="85:1-85:21"&gt;&lt;STRONG&gt;To use this code:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL data-sourcepos="87:1-95:0"&gt;
&lt;LI data-sourcepos="87:1-87:55"&gt;Create a new class library project in Visual Studio.&lt;/LI&gt;
&lt;LI data-sourcepos="88:1-88:47"&gt;Add a reference to the Revit API assemblies.&lt;/LI&gt;
&lt;LI data-sourcepos="89:1-89:33"&gt;Paste the code into the class.&lt;/LI&gt;
&lt;LI data-sourcepos="90:1-90:46"&gt;Implement the &lt;CODE&gt;IExternalCommand&lt;/CODE&gt; interface.&lt;/LI&gt;
&lt;LI data-sourcepos="91:1-91:23"&gt;Compile the project.&lt;/LI&gt;
&lt;LI data-sourcepos="92:1-92:30"&gt;Load the add-in into Revit.&lt;/LI&gt;
&lt;LI data-sourcepos="93:1-93:37"&gt;Select a level in the Revit model.&lt;/LI&gt;
&lt;LI data-sourcepos="94:1-95:0"&gt;Run the command.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-sourcepos="96:1-96:94"&gt;This will present a dialog box allowing you to select a new level type for the selected level.&lt;/P&gt;
&lt;P data-sourcepos="98:1-98:9"&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-sourcepos="100:1-103:0"&gt;
&lt;LI data-sourcepos="100:1-100:95"&gt;This code assumes that the selected level can be changed to any of the available level types.&lt;/LI&gt;
&lt;LI data-sourcepos="101:1-101:93"&gt;You may need to add additional checks or logic to handle specific scenarios or constraints.&lt;/LI&gt;
&lt;LI data-sourcepos="102:1-103:0"&gt;This is a basic example, and you can further enhance it by adding features like filtering level types based on criteria, providing more user-friendly interfaces, etc.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-sourcepos="104:1-104:18"&gt;I hope this helps!&lt;/P&gt;
&lt;P data-sourcepos="104:1-104:18"&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;
&lt;/DIV&gt;</description>
      <pubDate>Mon, 06 Jan 2025 17:22:14 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/change-level-type/m-p/13245701#M1585</guid>
      <dc:creator>jeremy_tammik</dc:creator>
      <dc:date>2025-01-06T17:22:14Z</dc:date>
    </item>
    <item>
      <title>Re: Change Level Type</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/change-level-type/m-p/13246608#M1586</link>
      <description>&lt;P&gt;thank you for your explanation &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Jan 2025 03:27:28 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/change-level-type/m-p/13246608#M1586</guid>
      <dc:creator>marcintromski</dc:creator>
      <dc:date>2025-01-07T03:27:28Z</dc:date>
    </item>
  </channel>
</rss>

