2013-03-08 1 views
1

Я ищу решение, где я могу преобразовать html в xml на основе xslt. Например:Преобразование HTML в XML в соответствии с XSLT

HTML: [это HTML от Ektron (а CMS)]

<p>Name:&#160;<input type="text" name="txtName" id="txtName" ektdesignns_caption="txtName" ektdesignns_name="txtName" title="txtName" ektdesignns_indexed="false" ektdesignns_nodetype="element" style="" size="24" class="design_textfield" value="Enter Name" />&#160; 
</p> 

<p>Age:<input type="text" name="txtAge" id="txtAge" ektdesignns_caption="txtAge" ektdesignns_name="txtAge" title="txtAge" ektdesignns_indexed="false" ektdesignns_nodetype="element" style="" size="24" class="design_textfield" />&#160;</p> 

<p>Place:<input type="text" name="txtPlace" id="txtPlace" ektdesignns_caption="txtPlace" ektdesignns_name="txtPlace" title="txtPlace" ektdesignns_indexed="false" ektdesignns_nodetype="element" style="" size="24" class="design_textfield" />&#160;</p> 

<p>&#160;Sex:<select name="rbSex" ektdesignns_maxoccurs="1" size="1" id="rbSex" ektdesignns_caption="rbSex" ektdesignns_name="rbSex" title="rbSex " ektdesignns_indexed="true" ektdesignns_nodetype="element" style=""> 
    <option selected="selected" value="0">(Select)</option> 
    <option value="Male">Male</option> 
    <option value="Female">Female</option> 
    </select><span style="font-size: 12px; line-height: 0;">&#160;</span><br /><br />&#160;</p> 

У меня есть свой соответствующий XSLT под рукой.

От обоих этих Я хочу XML следующим образом

<root> 
    <txtName>DemoName</txtName> 
    <txtAge>21</txtAge> 
    <txtPlace>UK</txtPlace> 
    <rbSex>Female</rbSex> 
</root> 

Я нашел XMLWrench приложение, которое делает эту функциональность, но мне нужно C# .net решение, больше похож на API или что-то.

Edit II: мне нужно значения в форме тоже должны быть добавлены в xml.eg: Если это существует имя в текстовом поле имени, то это должно быть добавлено в XML-узел

+0

Вы уверены, что ваш HTML - это XML? (чем ваш вопрос должен быть «как применить XSLT к XML), или сначала нужно преобразовать XML -> XML? Просто для уточнения« XSLT, соответствующего HTML », XSTL вы хотите применить к HTML, а не к XSLT, используемому для построения HTML. .. –

+0

@ Alexei Levenkov: Мне жаль, что я ввел неверный html, но я его исправить. Да, текущий HTML является действительным. Как я уже говорил, exe XMLWrench дает мне xml, но мне нужно веб-решение Итак, у меня есть HTML и его соответствующий XSLT. – 2013-03-08 07:10:43

+0

Видимо, повторяющийся вопрос http://stackoverflow.com/questions/15288559/getting-xml-from-html-by-xslt ... Ваше описание несколько запутывает ... Если вы не можете ответить, если HTML корректен XML или нет (вместо исправления его вручную), пожалуйста, по крайней мере, объясните, как XSLT связан с этим HTML и итоговым XML ... –

ответ

1

Если вам действительно нужно перейти на страницу HTML -> XML, я бы использовал a HTML parser, а затем программно создавал XML. Кроме того, если вы это сделаете, вы можете пропустить этап XSLT/XML и просто создать свой выходной XML.

Однако этот вопрос предполагает, что вы используете неправильный подход, и я согласен с Charles Wesley's answer - используйте смарт-форму. Формы HTML Ektron предназначены для простого сбора данных, где достаточно, чтобы данные могли быть экспортированы в Excel (например, простые формы регистрации).

Смарт-формы хранятся в формате XML. Вы можете создавать смарт-формы через API Ektron.

Здесь an eGandalf blog post об объединении форм Smart Forms и Ektron HTML, которые могут быть полезны.

Редактировать в ответ на комментарий- По-прежнему звучит так, будто вы следите за неправильным путем и пытаетесь работать против Ektron. Может быть, посмотрите на API? Например. для элементов календаря вы можете использовать calendar API.

Вы комментируете, что хотите решения «больше похоже на то, как Ektron делает это на самом деле». Ektron использует XSLT для преобразования XML в HTML, не наоборот. Вы должны использовать Smart Forms или API для получения ваших структурированных данных как XML. HTML-контент не должен требовать никакого или минимального преобразования (и если требуется преобразование HTML, XSLT не является решением).

Просьба перечитать eGandalf's blog post о сохранении формы отправки в виде смарт-формы. Я думаю, это касается вашей ситуации.

+0

+1: Я пробовал разбор html. Но у Ektron есть другие элементы управления, такие как каландр, ссылка, ресурсы и т. Д., Которых я не могу управлять. это возможно, но есть ли более простой способ. больше похоже на то, как Ektron делает это на самом деле. – 2013-03-14 05:17:37

2

Если вы используете Ektron, вы можете использовать SmartForm, который позволяет вам создавать пользовательский интерфейс веб-формы для редактора содержимого, но он сохраняет данные как XML. Чтобы получить доступ к XML, просто загрузите объект ContentData, и вы заметите, что свойство html объекта является XML.

+0

Я получаю это, но я с нетерпением жду создания смарт-формы XML с сайта без Ektron, то есть, как только я создам этот XML, я могу использовать его для добавления его в качестве контента на сайте Ektron позже. – 2013-03-11 05:44:41

3

Если вы спрашиваете о html для httml конфигурации smartform, вы можете использовать следующие методы.

Использование LoadPackage (m_refContApi, editorPackage) и TransformXsltPackage методы в ContentDesignerWithValidator.ascx для преобразования HTML на странице xml.This находится в/Workarea/блок управления/редактор/ContentDesignerWithValidator.ascx

попробуйте это.