mustache.js 是否可以映射 xml 并使用像 {{/root/Customer}} 这样的 xpath 路由?
Is it possible with mustache.js to map xml and use xpath routes like {{/root/Customer}}?
是否可以使用 mustache.js(或任何其他模板引擎)将 xml 映射到模板并使用类似 xpath 的路由?
Hello {{/root/Customer}}
You have won {{/root/Prise}}
有趣的是可以使用带有过滤器和轴的 xpaht 查询(这是 "Json routes" 不可能实现的)。
不回答你的问题:我不认为小胡子可以开箱即用。
在研究类似的问题时(我没有固定在任何模板引擎上)我可以节省一些钱:看看 jath and maybe extract further inspirations from this post.
我通过实现 IDictionary 完成了这个技巧(针对 nushache)。
public class RenderXpath : IDictionary<string,object>
{
XElement xElement;
public RenderXpath(XElement xElement)
{
this.xElement = xElement;
}
public object this[string key]
{
get
{
string @value = "";
var element = xElement.XPathSelectElement(((key as string)??"").Trim());
if (element.Elements().Count() > 0)
return new RenderXpath(element); // support loops
if (element.Value != null)
return element.Value;
return @value;
}
set
{
throw new NotImplementedException();
}
}
public bool ContainsKey(string key)
{
return true;
}
// all other throws NotImplementedException
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
语法为{{xmlDoc./License/Customer}}
多亏了 mustache,无需转义 '/' 字符。
是否可以使用 mustache.js(或任何其他模板引擎)将 xml 映射到模板并使用类似 xpath 的路由?
Hello {{/root/Customer}}
You have won {{/root/Prise}}
有趣的是可以使用带有过滤器和轴的 xpaht 查询(这是 "Json routes" 不可能实现的)。
不回答你的问题:我不认为小胡子可以开箱即用。
在研究类似的问题时(我没有固定在任何模板引擎上)我可以节省一些钱:看看 jath and maybe extract further inspirations from this post.
我通过实现 IDictionary 完成了这个技巧(针对 nushache)。
public class RenderXpath : IDictionary<string,object>
{
XElement xElement;
public RenderXpath(XElement xElement)
{
this.xElement = xElement;
}
public object this[string key]
{
get
{
string @value = "";
var element = xElement.XPathSelectElement(((key as string)??"").Trim());
if (element.Elements().Count() > 0)
return new RenderXpath(element); // support loops
if (element.Value != null)
return element.Value;
return @value;
}
set
{
throw new NotImplementedException();
}
}
public bool ContainsKey(string key)
{
return true;
}
// all other throws NotImplementedException
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
语法为{{xmlDoc./License/Customer}} 多亏了 mustache,无需转义 '/' 字符。