2014-02-03 4 views
0

Я ищу информацию о том, как конвертировать XHTML в очень специфический XML. Например, у меня есть следующий XHTML образец:Преобразование XHTML в XML

<body> 
<div id="divParent" class="header" style="width: 250px; height: 200px;"> 
    <fieldset id="fldScope" style="left: 5px; width: 240px; top: 5px; height: 60px;"> 
    <label style="left: 5px; top: 5px;">Reason:</label> 
    <select id="selReason"> 
     <option value="">SELECT ONE:</option> 
     <option value="TRAINING">TRAINING</option> 
     <option value="OTHER">OTHER</option> 
    </select> 
    </fieldset> 
    <fieldset class="bottomSection"> 
    <button id="btnClose" accessKey="o" class="webbutton" type="button"> 
     <u>O</u>K</button> 
    </fieldset> 
</div> 
</body> 

, которые мне нужно преобразовать во что-то вроде этого:

<control controlId="topLevelDiv" controlType="HtmlDiv" controlSearchProperties="id=divParent;class=header"> 
    <childControls> 
     <control controlId="topLevelFieldset" controlType="HtmlFieldSet" controlSearchProperties="id=fldScope"> 
      <childControls> 
      <control controlId="topLevelLabel" controlType="HtmlLabel" controlSearchProperties="InnerText=Reason:"> 
       <childControls/> 
      </control> 
      <control controlId="topLevelComboBox" controlType="HtmlComboBox" controlSearchProperties="Id=selReason"> 
       <childControls> 
        <control controlId="defaultOption" controlType="HtmlListItem" controlSearchProperties="InnerText=SELECT ONE"> 
         <childControls/> 
        </control> 
        <control controlId="option1" controlType="HtmlListItem" controlSearchProperties="InnerText=TRAINING"> 
         <childControls/> 
        </control> 
        <control controlId="option2" controlType="HtmlListItem" controlSearchProperties="InnerText=Other"> 
         <childControls/> 
        </control> 
       </childControls> 
      </control> 
      <control controlId="bottomFieldset" controlType="HtmlFieldSet" controlSearchProperties="class=bottomSection"> 
       <childControls> 
        <control controlId="okButton" controlType="HtmlButton" controlSearchProperties="Id=btnClose; acessKey=o; type=button" > 
         <childControls></childControls> 
        </control> 
       </childControls> 
      </control> 
      </childControls> 
     </control> 
    </childControls> 
</control> 

У меня есть все отображение на карте, как различные управление различными controltypes. Но когда я пытаюсь загрузить XHTML как XDocument (чтобы извлечь атрибуты и элементы), я получаю ошибку синтаксического анализа.

Я думал о регулярном выражении и основных манипуляциях с строкой, но это может стать слишком сложным для управления, особенно при попытке охватить все случаи краев.

Я не уверен, что было бы лучшим способом приблизиться к этому. Пожалуйста помоги!!

Заранее спасибо.

+2

XSLT ............ –

+0

Какая ошибка синтаксического анализа, которую вы получаете? – Douglas

+0

Не размещайте изображения, размещайте непосредственно код. – pid

ответ

1

Технически, XHTML уже IS XML. Таким образом, вы не можете преобразовать XHTML в XML, но вы можете использовать XSLT для преобразования XML из одной таблицы стилей в другую (вы можете думать об этом как о преобразовании определения или DTD, но это не совсем так тоже самое).

Здесь вы можете увидеть, как применять XSLT: How to apply an XSLT Stylesheet in C#

А вот как написать одно: beginner XSLT tutorial

Если вы получаете ошибку синтаксического анализа попытаться загрузить текст в браузере. Некоторые (Firefox) расскажут вам, где документ нарушает соответствие XML. Или сообщите об ошибке здесь.

Или посмотрите, что говорит вам W3C XHTML Validator.

+0

Спасибо за ваш ответ. Я не уверен, что XSLT - лучший подход для этого конкретного случая использования. Если вы посмотрите на вывод XML, все элементы и их соответствующие атрибуты отличаются от исходного XHTML. Должно быть какое-то сопоставление, которое я уже определил в своем .NET-проекте. –

Смежные вопросы