C# 如何将html标记转换为xml标记,反之亦然
我需要一个算法来将下面的HTML和XML标记相互转换 我的标记非常简单(只是嵌套的div标记和C# 如何将html标记转换为xml标记,反之亦然,c#,html,xml,C#,Html,Xml,我需要一个算法来将下面的HTML和XML标记相互转换 我的标记非常简单(只是嵌套的div标记和img标记),所以我不想使用.dll或像HTMLAgilityPack和 HTML <div class="row"> <div class="col-md-12 col-sm-12 col-xs-12 column"> <div class="ge-content"> <img src="/blabla.jpg" data-Type="S
img
标记),所以我不想使用.dll
或像HTMLAgilityPack和
HTML
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12 column">
<div class="ge-content">
<img src="/blabla.jpg" data-Type="Slider" data-Width="Full"></img>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 col-sm-12 col-xs-12 column">
<div class="ge-content">
<img src="/blabla.jpg" data-Type="Foo" data-Height="100"></img>
</div>
</div>
<div class="col-md-6 col-sm-12 col-xs-12 column">
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12 column">
<div class="ge-content">
<img src="/blabla.jpg" data-Type="Collection" data-Width="Full" data-DisplayOrder="5"></img>
</div>
</div>
</div>
</div>
</div>
<root>
<row>
<column>
<ge-content>
<UserControl>
<Type>Slider</Type>
<Width>Full</Width>
</UserControl>
</ge-content>
<class>col-md-12 col-sm-12 col-xs-12</class>
</column>
</row>
<row>
<column>
<ge-content>
<UserControl>
<Type>Foo</Type>
<Height>100</Height>
</UserControl>
</ge-content>
<class>col-md-6 col-sm-12 col-xs-12</class>
</column>
<column>
<row>
<column>
<ge-content>
<UserControl>
<Type>Collection</Type>
<Width>Full</Width>
<DisplayOrder>5</DisplayOrder>
</UserControl>
</ge-content>
<class>col-md-12 col-sm-12 col-xs-12</class>
</column>
</row>
<class>col-md-6 col-sm-12 col-xs-12</class>
</column>
</row>
</root>
XML
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12 column">
<div class="ge-content">
<img src="/blabla.jpg" data-Type="Slider" data-Width="Full"></img>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 col-sm-12 col-xs-12 column">
<div class="ge-content">
<img src="/blabla.jpg" data-Type="Foo" data-Height="100"></img>
</div>
</div>
<div class="col-md-6 col-sm-12 col-xs-12 column">
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12 column">
<div class="ge-content">
<img src="/blabla.jpg" data-Type="Collection" data-Width="Full" data-DisplayOrder="5"></img>
</div>
</div>
</div>
</div>
</div>
<root>
<row>
<column>
<ge-content>
<UserControl>
<Type>Slider</Type>
<Width>Full</Width>
</UserControl>
</ge-content>
<class>col-md-12 col-sm-12 col-xs-12</class>
</column>
</row>
<row>
<column>
<ge-content>
<UserControl>
<Type>Foo</Type>
<Height>100</Height>
</UserControl>
</ge-content>
<class>col-md-6 col-sm-12 col-xs-12</class>
</column>
<column>
<row>
<column>
<ge-content>
<UserControl>
<Type>Collection</Type>
<Width>Full</Width>
<DisplayOrder>5</DisplayOrder>
</UserControl>
</ge-content>
<class>col-md-12 col-sm-12 col-xs-12</class>
</column>
</row>
<class>col-md-6 col-sm-12 col-xs-12</class>
</column>
</row>
</root>
滑块
满满的
col-md-12 col-sm-12 col-xs-12
福
100
col-md-6 col-sm-12 col-xs-12
收集
满满的
5.
col-md-12 col-sm-12 col-xs-12
col-md-6 col-sm-12 col-xs-12
可用于此类转换。NET Framework为XSL转换提供了内置支持,您不需要使用第三方库。没有魔法,所以您仍然需要编写转换规则
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<root>
<xsl:apply-templates />
</root>
</xsl:template>
<xsl:template match="div[@class='row']">
<row>
<xsl:for-each select="div">
<column>
<xsl:apply-templates />
<xsl:variable name="length" select="string-length(@class)" />
<class>
<xsl:value-of select="substring(@class, 1, $length - 7)" />
</class>
</column>
</xsl:for-each>
</row>
</xsl:template>
<xsl:template match="div[@class='ge-content']">
<ge-content>
<xsl:apply-templates />
</ge-content>
</xsl:template>
<xsl:template match="img">
<UserControl>
<xsl:value-of select="@data-Type" />
</UserControl>
<xsl:choose>
<xsl:when test="@data-Height">
<Height>
<xsl:value-of select="@data-Height" />
</Height>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="@data-DisplayOrder">
<DisplayOrder>
<xsl:value-of select="@data-DisplayOrder" />
</DisplayOrder>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="@data-Width">
<Width>
<xsl:value-of select="@data-Width" />
</Width>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
例子
什么?
让我们假设您有一个有效的XML(“from.XML”)作为输入
同样的方法也可以用于从XML文件生成HTML文件。请在您的问题中设置正确的缩进。我建议使用将HTML标记(看起来像有效的XML)转换为XML标记库Sergii Zhevzhyk,但是类标记和用户控件属性在哪里?我刚刚更新了转换规则。如果这个答案适合你,请接受。