2017-12-26 7 views
0

Javascript/jQuery를 사용하여 XML 문자열에서 HTML 양식을 작성해야합니다. JavaScript에서 XML 문자열을 HTML 양식으로 변환

나는 아래의 답변을 통해

XML to Form

응답이에 대해 이야기했다 - 정확히 내가 원하는 무엇 XML to Form generator

을,하지만 난 제공된 링크에서 자바 스크립트 코드를 찾을 수 없습니다. XML 문자열을 구문 분석하고 노드를 반복하여 양식을 만들려고했지만 내 코드에 많은 버그가 있으며 시간이 부족합니다. 다음은 내가 노력 코드 :

function xmlToForm(text) { 
    var parser = new DOMParser(); 
    var xmlDoc = parser.parseFromString(text,"text/xml"); 

    var htmlForm = '<form action="">'; 


    var rootNode = xmlDoc.childNodes[0]; 

    htmlForm += nodeToHtmlForm(rootNode); 
    htmlForm += '</form>'; 

    function nodeToHtmlForm (node) { 
     var form = ''; 

     if(node.childNodes.length > 0) { 
      node.childNodes.forEach(function(childNode) { 

      if(childNode.childNodes.length > 0) { 

       if(childNode.firstChild.nodeValue) { 
        form += '<div class="form-group">' 
        form += '<label><h4>'+ childNode.nodeName +'</h4>'+ '</label>'; 
        form += '<input class="" id="id" value=' + childNode.firstChild.nodeValue + '>'; 
        form += '</div>' 
       } else { 

       } 

       form += '<br><h4>'+ childNode.nodeName +'</h4><br>' 

       childNode.childNodes.forEach(function(grandChildNode) { 
        console.log(grandChildNode); 
        form += nodeToHtmlForm(grandChildNode) 
       }); 
      } 

      else { 
       form += '<div class="form-group">' 
       form += '<label>'+node.nodeName+'</label>'; 
       form += '<input class="" id="id" value='+node.firstChild.nodeValue+'>'; 
       form += '</div>' 
      } 

      }); 
     } else { 
       if(node.firstChild) { 
        form += '<div class="form-group">' 
        form += '<label>'+node.nodeName+'</label>'; 
        form += '<input class="" id="id" value='+node.firstChild.nodeValue+'>'; 
        form += '</div>' 
       } else { 
        form += '<br><h4>'+ node.nodeName +'</h4><br>'; 
       } 
      } 

     return form; 
    } 
    return htmlForm; 
    //document.getElementById("htmlForm").innerHTML = htmlForm; 
} 

누군가가 나를 XML에서 HTML 양식을 구축 할 수 있도록주십시오.

+0

를 찾을 수 없습니다. 언급 한 사이트는 js도 사용하지 않습니다. 인터넷 검색을 한 후 XSLT를 사용하여 원하는 것을 성취 할 수있는 방법이 있다는 것을 알게되었습니다. 나는 당신이 서버 측에서 xml을 파싱하고 api처럼 사용자에게 html을 돌려 주어야한다고 생각한다. – orangespark

+0

@ orangespark, 실제로 이것은 배경 페이지에서 XML을 가져와 HTML 양식으로 변환하고 확장에 표시해야하는 크롬 확장입니다. 나는 이것을 위해서만 javascript/jQuery를 사용하도록 제한되어있다. –

+0

왜 그냥 당신이 js 및 jquery – orangespark

답변

0
호기심 사람들을 위해

또는 당신이 JS에 효율적으로 그렇게 할 수 있다고 생각 그나마 다른 곳 솔루션

function xmlToForm(xmlDoc) { 
     var framed_html = ""; 

     xml_to_html($(xmlDoc[0].children[0]));  

     function xml_to_html(xmlDoc) { 
      if (xmlDoc[0].firstElementChild) { 
       framed_html += "<fieldset class='back-fieldset'><legend>" + xmlDoc[0].nodeName + "</legend>"; 
       xml_to_html($(xmlDoc[0].firstElementChild)); 
       framed_html += "</fieldset>"; 
       if (xmlDoc[0].nextElementSibling) { 
        xml_to_html($(xmlDoc[0].nextElementSibling)); 
       } 

      } else { 
       framed_html += "<div class='form-group'><label>" + xmlDoc[0].nodeName + "</label>"; 
       framed_html += "<input type='text' value='"+xmlDoc[0].innerHTML+"'></div>"; 

       if (xmlDoc[0].nextElementSibling) { 
        xml_to_html($(xmlDoc[0].nextElementSibling)); 
       } else { 
        framed_html += "<hr>"; 
       } 
      } 

     } 

     return framed_html; 
    } 
0

이것은 분명 도움이 될 것입니다. 하지만 jquery만으로는 효율적으로 처리 할 수 ​​없습니다.

https://github.com/davidmoten/xsd-forms

+0

OP를 어떻게 도울 수 있습니까? 설명 해주십시오. 그것의 xsd 즉 xml 스키마 문서를 html로 변환 – orangespark

+0

@orangespark xml과 xsd가 지정하는 것에 대한 구체적인 지식을 갖기를 바랍니다. 실제로 xsd는 XML 자체입니다. 그 목적은 다른 XML 문서의 구조를 검증하는 것입니다. xsd는 모든 xml에 필수 사항은 아니지만 XML이 특정 용도로 사용될 수 있음을 보장합니다. xml은 적절한 형식 및 구조의 데이터 만 포함합니다. – amy

+0

u 그냥 내가 u를 물었을 때의 차이를 봤어 : P u는 여기에 붙여 넣기 대신 링크를 보여줄 수 있었다. https : //stackoverflow.com/a/2334009/2791802 ... LOL – orangespark