私はJavaScriptを作成するためにTypeScriptを使用しています。関数は、キーと値を含むXML文字列を返す必要があります。値は関数のパラメータから得られます。私はそれが安全に行われることを望みます。たとえば、Terms & Conditions
はTerms & Conditions
にエンコーディングする必要があります。 I have seen the DOMParser is recommended for processing XML。ルートノードなしでXML文字列を作成する方法は?
My機能は、現在、次のようになります。呼び出されたとき
createDocumentXml(base64Document: string, category: string, documentName: string, documentExtension: string, userId: number, documentSizeBytes: number): string {
let xmlTemplate =
'<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' +
'<active>true</active>' +
'<category></category>' +
'<content></content>' +
'<createdByID></createdByID>' +
'<createdDate xsi:nil="true"/>' +
'<description></description>' +
'<fileExtension></fileExtension>' +
'<name></name>' +
'<size></size>' +
'</document>'
// use a DOM parser to modify the XML safely (i.e. escape any reserved characters)
let parser = new DOMParser();
let xmlDocument = parser.parseFromString(xmlTemplate, 'text/xml');
xmlDocument.getElementsByTagName('category')[0].textContent = category;
xmlDocument.getElementsByTagName('content')[0].textContent = base64Document;
xmlDocument.getElementsByTagName('createdByID')[0].textContent = userId.toString();
xmlDocument.getElementsByTagName('description')[0].textContent = documentName;
xmlDocument.getElementsByTagName('fileExtension')[0].textContent = documentExtension;
xmlDocument.getElementsByTagName('name')[0].textContent = documentName;
xmlDocument.getElementsByTagName('size')[0].textContent = documentSizeBytes.toString();
let serializer = new XMLSerializer();
return serializer.serializeToString(xmlDocument);
}
、それはこのような文字列を返します:
私はそれだけでなくて、内側XML要素を返すために取得できますか<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<active>true</active>
<category>Correspondence\Emails</category>
<content>ZmlzaCAmIGNoaXBzIQ==</content>
<createdByID>6627774</createdByID>
<createdDate xsi:nil="true"/>
<description>Terms & Conditions</description>
<fileExtension>docx</fileExtension>
<name>Terms & Conditions</name>
<size>12345</size>
</document>
document
ルート?
<active>true</active>
<category>Correspondence\Emails</category>
<content>ZmlzaCAmIGNoaXBzIQ==</content>
<createdByID>6627774</createdByID>
<createdDate xsi:nil="true"/>
<description>Terms & Conditions</description>
<fileExtension>docx</fileExtension>
<name>Terms & Conditions</name>
<size>12345</size>
私はxmlTemplate
からルートを省略しようとしたが、DOMParser.parseFromString
は1が必要です。
この関数の結果は格納され、その後、関連する場所に完全なXMLデータ(ルートノードを含む)を挿入する別の関数に渡されます。むしろ、あなたの現在のリターンよりも
xml標準ではルートノードが必要です。文書に1つがなければ、それは有効なxmlではありません。とにかくそれを省略したいのですが? –
ps、これはエンコーディングと呼ばれ、エスケープしません。 –
ルートノードなしでXMLを必要としません。この要求は意味をなさない。 (言い換えれば、あなたがそれを必要と思う理由を教えてください) – Tomalak