Соответствие начального тега конечному тегу в XML, при конвертации HTML в XML - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь преобразовать HTML в XML, где мой HTML выглядит следующим образом:

<HTML>
  <HEAD>
    <TITLE></TITLE>
  </HEAD>
  <BODY>
    <A Name='name">Udaya</A>
    <A Name="Age">20</A>
  </BODY>
</HTML>

Теперь в моем компоненте .NET мне удалось изменить это на XML, который выглядит следующим образом:

<ns0:CHTML xmlns:nso='http://CHTML'>
  <HTML>
    <HEAD>
      <TITLE></TITLE>
    </HEAD>
    <BODY>
      <ANamename>Udaya</A>
      <ANameAge>20</A>
    </BODY>
  </HTML>
</CHTML>

Все работает хорошо, кроме содержимого тега body, где начальный тег не совпадает с конечным тегом, содержимое тега body должно быть таким, как показано ниже.Для удобства я показываю только тег body ниже для ясного понимания:

<BODY>
  <ANamename>Udaya</ANamename>
  <ANameAge>20</AANameAge>
</BODY>

Здесь я объясняю, как мне удалось это сделать в моей библиотеке классов:

public void Disassemble(IPipelineContext pContext, IBaseMessage pInMsg)
{
    string originalDataString;

    try
    {

        //fetch original message
        Stream originalMessageStream = pInMsg.BodyPart.GetOriginalDataStream();
        byte[] bufferOriginalMessage = new byte[originalMessageStream.Length];

        originalMessageStream.Read(bufferOriginalMessage, 0, Convert.ToInt32(originalMessageStream.Length));

        originalDataString = System.Text.ASCIIEncoding.ASCII.GetString(bufferOriginalMessage);
    }
    catch (Exception ex)
    {
        throw new ApplicationException("Error in reading original message: " + ex.Message);
    }

    HtmlAgilityPack.HtmlDocument originalMessageDoc = new HtmlAgilityPack.HtmlDocument();

    string[] Find ={ "&#192;", "&#194;", "&#198;", "&#199;", "&#200;", "&#201;","&#202;", "&#203;", "&#206;", "&#207;", "&#212;", "&#338;", "&#217;", "&#219;", "&#220;", "&#376;","&#224;", "&#226;", "&#230;", "&#231;", "&#232;", "&#233;", "&#234;", "&#235;", "&#238;", "&#239;","&#244;", "&#339;", "&#249;", "&#251;", "&#252;", "&#255;", "&#196;", "&#201;", "&#214;", "&#220;","&#223;", "&#228;", "&#233;", "&#246;", "&#252;",",",".","&","<A name=","</A"};

    string[] Replace ={ "À", "Â", "Æ", "Ç", "È", "É", "Ê", "Ë", "Î", "Ï",
                            "Ô", "Œ", "Ù", "Û", "Ü", "Ÿ", "à", "â", "æ", "ç",
                            "è", "é", "ê", "ë", "î", "ï", "ô", "œ", "ù", "û",
                            "ü", "ÿ", "Ä", "É", "Ö", "Ü", "ß", "ä", "é", "ö",
                            "ü", "" ,  "",  "","<Aname","</Aname"};

    for (int i = 0; i < Find.Length; i++)
    {
        originalDataString = originalDataString.Replace(Find[i], Replace[i]);
    }

    System.Diagnostics.EventLog.WriteEntry("Message", originalDataString);

    StringBuilder messageString;
    try
    {
        // load original message
        string RootElement = "CWWHTML";

        originalMessageDoc.LoadHtml(originalDataString);

        messageString = new StringBuilder();                    

        StreamWriter SW = new StreamWriter("C:\\Documents and Settings\\biztalkuser\\Desktop\\Test\\OuputCWW\\Test1.txt");

        messageString.Append("<" + "ns0:" + RootElement + " " + "xmlns:ns0='" + "http://CWWProject.Schema1'" + ">");

        messageString.Append(originalDataString);
        messageString.Append("</" + "ns0:CWWHTML" + ">");               

        SW.WriteLine(messageString.ToString());
        SW.Close();

        CreateOutgoingMessage(pContext, messageString.ToString(), "http://CWWProject.Schema1");
    }

Может любойподскажите, какие изменения я должен внести для достижения желаемого результата в теге body?

...