Помощ за конвертиране на XML в HTML

ma57er

Active Member
Здравейте!

До момента не съм се занимавал с конвертиране на XML в HTML и общо взето не мога да извадя данни по никакъв начин. От сутринта чета и си блъскам главата, но не ми се получават нещата.

XML-а, който трябва да префасонирам в четлив вид е:

HTML:
<s>
<c n="Consumer">
<s>
  <c n="CAIS" /> 
<c n="CAPS">
<s>
<c n="Consumer">
<s>
<c n="Address">
<s>
  <a n="addressFlag">0</a> 
  <a n="addressType">6</a> 
  <a n="country" /> 
  <a n="endDate" /> 
  <a n="homeTelNbr" /> 
  <a n="line1" /> 
  <a n="line2">ul. Vasov 10</a> 
  <a n="line3" /> 
  <a n="line4">Sofia</a> 
  <a n="postcode" /> 
  <a n="startDate" /> 
  <a n="timeAtAddress" /> 
  </s>
  </c>
<s n="Employer">
  <a n="country" /> 
  <a n="currentPreviousIndicator" /> 
  <a n="employerName" /> 
  <a n="endDate" /> 
  <a n="idNumber" /> 
  <a n="line1" /> 
  <a n="line2" /> 
  <a n="line3" /> 
  <a n="line4" /> 
  <a n="postcode" /> 
  <a n="startDate" /> 
  <a n="timeWithEmployer" /> 
  <a n="workMobileTelNbr" /> 
  <a n="workTelNbr" /> 
  </s>
  <a n="aliasName" /> 
  <a n="amExpressCCHeld" /> 
  <a n="applicantType">01</a> 
  <a n="chqGteeCCHeld" /> 
  <a n="consentFlag" /> 
  <a n="dateConsentGiven" /> 
  <a n="dateOfBirth">19800305000000</a> 
  <a n="debitCCHeld" /> 
  <a n="dinersCCHeld" /> 
  <a n="education" /> 
  <a n="jcbCCHeld" /> 
  <a n="maritalStatus" /> 
  <a n="mastercardCCHeld" /> 
  <a n="mobileTelNbr" /> 
  <a n="name1">na</a> 
  <a n="name2" /> 
  <a n="name3" /> 
  <a n="nationality">BG</a> 
  <a n="numberDependants" /> 
  <a n="occupation" /> 
  <a n="occupationStatus" /> 
  <a n="otherCCHeld" /> 
  <a n="otherIncome" /> 
  <a n="placeOfBirth" /> 
  <a n="primaryID">1111111111</a> 
  <a n="primaryIDExpiry" /> 
  <a n="primaryIDIssueDate" /> 
  <a n="primaryIDIssuePlace" /> 
  <a n="primaryIDType">03</a> 
  <a n="primaryIncome">1000</a> 
  <a n="primaryIncomeFlag">0</a> 
  <a n="primaryIncomeFreq">3</a> 
  <a n="residentialStatus" /> 
  <a n="retailCCHeld" /> 
  <a n="secondaryID" /> 
  <a n="secondaryIDExpiry" /> 
  <a n="secondaryIDType" /> 
  <a n="sex">1</a> 
  <a n="surname">n/a</a> 
  <a n="title" /> 
  <a n="visaCCHeld" /> 
  </s>
  </c>
  <a n="accountClass">1</a> 
  <a n="amountOfFinance">2000</a> 
  <a n="applicationDate">20111206000000</a> 
  <a n="applicationNumber">111</a> 
  <a n="comments" /> 
  <a n="creditLimit" /> 
  <a n="currency">BGN</a> 
  <a n="disputeIndicator">0</a> 
  <a n="duration" /> 
  <a n="durationUnits" /> 
  <a n="enquiryDate">20140606000000</a> 
  <a n="finalPaymentAmount" /> 
  <a n="financeType">02</a> 
  <a n="initialDepositAmount" /> 
  <a n="instalmentAmount">200</a> 
  <a n="leasingType" /> 
  <a n="nbrOfApplicants">1</a> 
  <a n="paymentFrequency">03</a> 
  <a n="purposeOfFinance" /> 
  <a n="reason">01</a> 
  <a n="streamID">41676</a> 
  <a n="subscriberName">Alabala test</a> 
  </s>
  </c>
<c n="ExtDB1">
<s>
  <c n="BULSTAT" /> 
<s n="DACall">
  <a n="NAScore">0</a> 
  <a n="NAScorecardID">0</a> 
  <a n="Outcome">0</a> 
  <a n="Score">0</a> 
  <a n="ScorecardID">0</a> 
  </s>
<s n="Nssi">
<s n="report2">
<c n="EgnInfo">
<s>
  <a n="Address">БЪЛГАРИЯ, гр.София, област София, ул.Някоя Nо.15</a> 
  <a n="City">гр. София</a> 
  <a n="EGN">1111111111</a> 
  <a n="PostalCode">1592</a> 
  <a n="familyname">Георгиев</a> 
  <a n="initials">ГВВ</a> 
  </s>
  </c>
<c n="Ruso">
<s>
<c n="Bulstat">
<s>
<s n="BulstatInfo">
  <a n="Bulstat">121121121</a> 
  <a n="Name">ФИРМАТА</a> 
  <a n="address">бул. България</a> 
  </s>
<c n="PersonalInfo">
<s>
  <a n="Month">4</a> 
  <a n="Salary">1400.00</a> 
  <a n="Typeofisured">01</a> 
  <a n="Workdays">15</a> 
  <a n="Year">2007</a> 
  <a n="correctionflag">0</a> 
  <a n="inputdate">28/06/2007</a> 
  </s>
<s>
  <a n="Month">5</a> 
  <a n="Salary">1400.00</a> 
  <a n="Typeofisured">01</a> 
  <a n="Workdays">20</a> 
  <a n="Year">2007</a> 
  <a n="correctionflag">0</a> 
  <a n="inputdate">28/06/2007</a> 
  </s>
<s>
  <a n="Month">6</a> 
  <a n="Salary">1400.00</a> 
  <a n="Typeofisured">01</a> 
  <a n="Workdays">22</a> 
  <a n="Year">2007</a> 
  <a n="correctionflag">0</a> 
  <a n="inputdate">20/07/2007</a> 
  </s>
<s>
  <a n="Month">7</a> 
  <a n="Salary">1400.00</a> 
  <a n="Typeofisured">01</a> 
  <a n="Workdays">22</a> 
  <a n="Year">2007</a> 
  <a n="correctionflag">0</a> 
  <a n="inputdate">27/08/2007</a> 
  </s>
<s>
  <a n="Month">8</a> 
  <a n="Salary">1400.00</a> 
  <a n="Typeofisured">01</a> 
  <a n="Workdays">23</a> 
  <a n="Year">2007</a> 
  <a n="correctionflag">0</a> 
  <a n="inputdate">28/09/2007</a> 
  </s>
<s>
  <a n="Month">9</a> 
  <a n="Salary">1400.00</a> 
  <a n="Typeofisured">01</a> 
  <a n="Workdays">19</a> 
  <a n="Year">2007</a> 
  <a n="correctionflag">0</a> 
  <a n="inputdate">15/10/2007</a> 
  </s>
  </c>
  </s>
<s>
<s n="BulstatInfo">
  <a n="Bulstat">123544123</a> 
  <a n="Name">ЕТ Георги Георгиев</a> 
  <a n="address">гр. София, ул .Някоя Nо.15</a> 
  </s>
<c n="PersonalInfo">
<s>
  <a n="Month">1</a> 
  <a n="Salary">636.00</a> 
  <a n="Typeofisured">01</a> 
  <a n="Workdays">21</a> 
  <a n="Year">2007</a> 
  <a n="correctionflag">0</a> 
  <a n="inputdate">13/02/2007</a> 
  </s>
<s>
  <a n="Month">2</a> 
  <a n="Salary">636.00</a> 
  <a n="Typeofisured">01</a> 
  <a n="Workdays">20</a> 
  <a n="Year">2007</a> 
  <a n="correctionflag">1</a> 
  <a n="inputdate">16/08/2007</a> 
  </s>
<s>
  <a n="Month">3</a> 
  <a n="Salary">636.00</a> 
  <a n="Typeofisured">01</a> 
  <a n="Workdays">22</a> 
  <a n="Year">2007</a> 
  <a n="correctionflag">0</a> 
  <a n="inputdate">17/05/2007</a> 
  </s>
<s>
  <a n="Month">4</a> 
  <a n="Salary">159.00</a> 
  <a n="Typeofisured">01</a> 
  <a n="Workdays">05</a> 
  <a n="Year">2007</a> 
  <a n="correctionflag">0</a> 
  <a n="inputdate">16/05/2007</a> 
  </s>
  </c>
  </s>
  </c>
  <a n="RusoNbr">21</a> 
  </s>
  </c>
  <a n="status">1</a> 
  </s>
  </s>
  </s>
  </c>
<s n="Summary">
  <a n="CAISDistribution1">0</a> 
  <a n="CAISDistribution2">0</a> 
  <a n="CAISDistribution3">0</a> 
  <a n="CAISDistribution4">0</a> 
  <a n="CAISDistribution5">0</a> 
  <a n="CAISDistribution5Plus">0</a> 
  <a n="CAISRecordsGuarantor">0</a> 
  <a n="CAISRecordsGuarantorRecip">0</a> 
  <a n="CAISRecordsJoint">0</a> 
  <a n="CAISRecordsJointRecip">0</a> 
  <a n="CAISRecordsOwner">0</a> 
  <a n="CAISRecordsOwnerRecip">0</a> 
  <a n="CAISRecordsReferee">0</a> 
  <a n="CAISRecordsRefereeRecip">0</a> 
  <a n="CAPSDistribution1">1</a> 
  <a n="CAPSDistribution2">0</a> 
  <a n="CAPSDistribution3">0</a> 
  <a n="CAPSDistribution4">0</a> 
  <a n="CAPSDistribution5">0</a> 
  <a n="CAPSDistribution5Plus">0</a> 
  <a n="CAPSLast12MonthsGuarantor">0</a> 
  <a n="CAPSLast12MonthsJoint">0</a> 
  <a n="CAPSLast12MonthsOwner">0</a> 
  <a n="CAPSLast12MonthsReferee">0</a> 
  <a n="CAPSLast3MonthsGuarantor">0</a> 
  <a n="CAPSLast3MonthsJoint">0</a> 
  <a n="CAPSLast3MonthsOwner">1</a> 
  <a n="CAPSLast3MonthsReferee">0</a> 
  <a n="CAPSLast6MonthsGuarantor">0</a> 
  <a n="CAPSLast6MonthsJoint">0</a> 
  <a n="CAPSLast6MonthsOwner">0</a> 
  <a n="CAPSLast6MonthsReferee">0</a> 
  <a n="CAPSRecordsGuarantor">0</a> 
  <a n="CAPSRecordsGuarantorBeforeFilter">0</a> 
  <a n="CAPSRecordsJoint">0</a> 
  <a n="CAPSRecordsJointBeforeFilter">0</a> 
  <a n="CAPSRecordsOwner">1</a> 
  <a n="CAPSRecordsOwnerBeforeFilter">1</a> 
  <a n="CAPSRecordsReferee">0</a> 
  <a n="CAPSRecordsRefereeBeforeFilter">0</a> 
  <a n="PotentialMonthlyInstalmentsAllButOwner">0</a> 
  <a n="PotentialMonthlyInstalmentsOwner">200</a> 
  <a n="PotentialOutstandingBalanceAllButOwner">0</a> 
  <a n="PotentialOutstandingBalanceOwner">2000</a> 
  <a n="TotalMonthlyInstalmentsAllButOwner">0</a> 
  <a n="TotalMonthlyInstalmentsOwner">0</a> 
  <a n="TotalOutstandingBalanceAllButOwner">0</a> 
  <a n="TotalOutstandingBalanceOwner">0</a> 
  <a n="WorstCurrentPayStatusGuarantor" /> 
  <a n="WorstCurrentPayStatusJoint" /> 
  <a n="WorstCurrentPayStatusOwner" /> 
  <a n="WorstCurrentPayStatusReferee" /> 
  <a n="WorstEverPayStatusGuarantor" /> 
  <a n="WorstEverPayStatusJoint" /> 
  <a n="WorstEverPayStatusOwner" /> 
  <a n="WorstEverPayStatusReferee" /> 
  </s>
  <c n="Warnings" /> 
  </s>
  </c>
  <c n="ValidationErrors" /> 
  <a n="errorCode">0</a> 
  <a n="responseDate">20140606154351</a> 
  <a n="streamID">41677</a> 
  </s>

С джава се опитвам да вадя стойностите, но или ми вади грешки, или нищо. Последно пробвах нещо от сорта на:

HTML:
<!DOCTYPE html>
<html>
<head>
<script src="http://www.w3schools.com/dom/loadxmldoc.js">
</script>
</head>
<body>

<script>
xmlDoc=loadXMLDoc("1.xml");

x=xmlDoc.getElementsByTagName("c")getElementsByAttributeName("Address");
txt=x.nodeValue;
document.write(txt);
</script>
</body>
</html>


Някой може ли да ме ориентира/да ми обясни, самата логика, защото не я вдявам.
Не мога да схвана как да хващам полетата на: n="....", за да ми вади стойностите.
 
От: Помощ за конвертиране на XML в HTML

Забрави ги тия простотии с джабаскрипта -> Правилният начин.
 
От: Помощ за конвертиране на XML в HTML

Това добре, но как да хващам самите n="..." ? Това не мога да схвана и има ли някаква особеност с йерархията

HTML:
<c blabla
     <a n="bla bla"
 
От: Помощ за конвертиране на XML в HTML

Превърни го в json мисля че ще ти е по-лесно
 
От: Помощ за конвертиране на XML в HTML

Здравейте,

Ежедневно се сблъскваме с този проблем.
Единственият инструмент, който ни е позволен да използваме е JavaScript.
Едно решение е да се конвертира XML'а в JSON и след това да се използва библиотеката mustache.js.
Разбира се функцията за конвертиране зависи от самият XML, но ето един пример, който конвертира по елементарен начин XML към JSON

function xmlToJs(xml) {
var result = {};
for each (var attr in xml.attributes()) {
result[attr.name()] = attr.toString();
}
for each (var child in xml.elements()) {
result[child.name()] = xmlToJs(child);
}
return result;
}
 
От: Помощ за конвертиране на XML в HTML

Ето ти пример
Код:
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
  		<html>
	  		<body>
	  			<xsl:value-of select="s/a[contains(@n, 'responseDate')]" />
	  			<br/>
	  			<xsl:value-of select="s/a[contains(@n, 'streamID')]" />
	  		</body>
	  	</html>
	</xsl:template>  
</xsl:stylesheet>

Резултат

Код:
20140606154351
41677

Повече по темата

PS: По-идиотски xml не бях виждал до сега :cry:
 

Горе