Как добавить ребенка и внука в XML на основе значения с помощью C#?
Мой XML содержит такие данные:
<?xml version="1.0" encoding="UTF-8"?> <html xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ev="http://www.w3.org/2001/xml-events" xml:lang="de"> <head> <title>Some Title</title> <link rel="stylesheet" type="text/css" href="../Styles/9783748258957.css"/> </head> <body> <div id="Inhalt"> <p class="toc-ch"><span class="bi">4 Main Value</span></p> <p class="toc-h1">4.1 Child Value 1</p> <p class="toc-h1">4.2 Child Value 2</p> <p class="toc-h1">4.3 Child Value 3</p> <p class="toc-h2">4.3.1 Grand-child Value 3.1</p> <p class="toc-h2">4.3.2 Grand-child Value 3.2</p> <p class="toc-h2">4.3.3 Grand-child Value 3.3</p> <p class="toc-h2">4.3.4 Grand-child Value 3.4</p> <p class="toc-h1">4.4 Child Value 4</p> <p class="toc-h2">4.4.1 Grand-child Value 4.1</p> <p class="toc-h2">4.4.2 Grand-child Value 4.2</p> <p class="toc-h2">4.4.3 Grand-child Value 4.3</p> <p class="toc-h2">4.4.4 Grand-child Value 4.4</p> <p class="toc-h1">4.5 Child Value 5</p> </div> </body> </html>
Вот чего я хочу:
<?xml version="1.0" encoding="UTF-8"?> <html xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:ev="http://www.w3.org/2001/xml-events" xml:lang="de"> <head> <title>Some Title</title> <link rel="stylesheet" type="text/css" href="../Styles/9783748258957.css"/> </head> <navMap> <navPoint id="navPoint-01" playOrder="01"><navLabel><text>4 Main Value</text></navLabel> <navPoint id="navPoint-02" playOrder="02"><navLabel><text>4.1 Child Value 1</text></navLabel></navPoint> <navPoint id="navPoint-03" playOrder="03"><navLabel><text>4.2 Child Value 2</text></navLabel></navPoint> <navPoint id="navPoint-04" playOrder="04"><navLabel><text>4.3 Child Value 3</text></navLabel> <navPoint id="navPoint-05" playOrder="05"><navLabel><text>4.3.1 Grand-child Value 3.1</text></navLabel></navPoint> <navPoint id="navPoint-06" playOrder="06"><navLabel><text>4.3.2 Grand-child Value 3.2</text></navLabel></navPoint> <navPoint id="navPoint-07" playOrder="07"><navLabel><text>4.3.3 Grand-child Value 3.3</text></navLabel></navPoint> <navPoint id="navPoint-08" playOrder="08"><navLabel><text>4.3.4 Grand-child Value 3.4</text></navLabel></navPoint></navPoint> <navPoint id="navPoint-09" playOrder="09"><navLabel><text>4.4 Child Value 4</text></navLabel> <navPoint id="navPoint-10" playOrder="10"><navLabel><text>4.4.1 Grand-child Value 4.1</text></navLabel></navPoint> <navPoint id="navPoint-11" playOrder="11"><navLabel><text>4.4.2 Grand-child Value 4.2</text></navLabel></navPoint> <navPoint id="navPoint-12" playOrder="12"><navLabel><text>4.4.3 Grand-child Value 4.3</text></navLabel></navPoint> <navPoint id="navPoint-13" playOrder="13"><navLabel><text>4.4.4 Grand-child Value 4.4</text></navLabel></navPoint></navPoint> <navPoint id="navPoint-14" playOrder="14"><navLabel><text>4.5 Child Value 5</text></navLabel></navPoint></navPoint> </navMap> </html>
То, что я пробовал, не создает ребенка или внука. Все элементы разделены, но если вы видите мой желаемый результат, он показывает ребенка и внука. Пожалуйста, помогите мне достичь этого.
Что я уже пробовал:
Это то, что я пробовал:
var navPoint = new XElement(ePUBv3TOCNamespace + "navPoint" , new XAttribute("id", "navPoint-" + navPointcounter) , new XAttribute("playOrder", playOrder) , new XElement(ePUBv3TOCNamespace + "navLabel" , new XElement(ePUBv3TOCNamespace + "text", fileWithoutExtension))); var navContent = new XElement(ePUBv3TOCNamespace + "content", new XAttribute("src", "Text/" + fullFileName)); xtabdoc.Root.Element(ePUBv3TOCNamespace + "navMap").Add(navPoint); navPoint.Add(navContent); navPointcounter++; playOrder++;