我有XML需要解析但无法控制创建.不幸的是,它不是非常严格的XML并包含以下内容:
<mytag>This won't parse & contains an ampersand.</mytag>
Run Code Online (Sandbox Code Playgroud)
javax.xml.stream类根本不喜欢这个,并且正确地错误:
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[149,50]
Message: The entity name must immediately follow the '&' in the entity reference.
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?我无法更改XML,所以我想我需要一个容错的解析器.
我倾向于修复一个不需要对现有解析器代码造成太多破坏的修复.
我试图在.NET(C#)中的字符串中删除XML实体,但我似乎没有让它正常工作.
例如,如果我有字符串AT&T,则应将其翻译为AT&T.
一种方法是使用HttpUtility.HtmlDecode(),但这是用于HTML.
所以我有两个问题:
使用HttpUtility.HtmlDecode()解码XML实体是否安全?
我如何使用XmlReader(或类似的东西)来做到这一点?我尝试了以下,但总是返回一个空字符串:
static string ReplaceEscapes(string text)
{
StringReader reader = new StringReader(text);
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
using (XmlReader xmlReader = XmlReader.Create(reader, settings))
{
return xmlReader.ReadString();
}
}
Run Code Online (Sandbox Code Playgroud)!请不要重定向到本文,因为它没有解决下面描述的问题.
假设我们在数据库中有这样的表:
SomeTable
我们已经配置了Linq2Sql数据上下文.我们为SomeTable配置了一个实体:OnLoaded方法以DT的DateTimeKind变为Utc(最初是未指定的)的方式修改DT.
现在问题是:
如果我们使用整个实体请求数据,则调用OnLoaded方法:
From x In ourDataContext.SomeTable Select x
Run Code Online (Sandbox Code Playgroud)
但是如果我们只请求表的一部分(因此生成一个匿名类型),则不会调用OnLoaded:
From x In ourDataContext.SomeTable Select x.DT
Run Code Online (Sandbox Code Playgroud)
很明显,OnLoaded是在SomeTable实体中定义的,而不是匿名类型.
目前我考虑创建可替代匿名类型的自定义实体.但也许有人有更好的解决方案?
假设Symfony2中的实体具有字段bestfriend,该字段是User从User满足复杂要求的实体列表中选择的实体.您可以通过指定它是实体字段类型来在表单中呈现此字段,即:
$builder->add('bestfriend', 'entity', array(
'class' => 'AcmeHelloBundle:User',
'property' => 'username',
));
Run Code Online (Sandbox Code Playgroud)
此表单字段呈现为a <select>,其中每个显示的值都采用以下形式:
<option value="user_id">user_username</option>
Run Code Online (Sandbox Code Playgroud)
因此,人们可以通过使用<optgroup>标签来突出显示朋友的这种特殊功能.
遵循这个原则,我创建了一个字段类型,即FriendType在这个答案中创建选择数组,其呈现方式如下:
$builder->add('bestfriend', new FriendType(...));
Run Code Online (Sandbox Code Playgroud)
在FriendType类创建一个<select>具有相同组织<option>秒,但下举办<optgroup>秒.
我来这里问题!提交表单时,框架会识别出用户字段不是User的实例,但它是一个整数.我怎样才能让Symfony2明白传递的int是User类型实体的id?
我正在尝试使用动态实体的序列在EclipseLink中工作,我需要一些帮助.
我正在定义我的动态实体,如下所示:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("default");
EntityManager em = emf.createEntityManager();
Session session = JpaHelper.getEntityManager(em).getServerSession();
DynamicClassLoader dcl = DynamicClassLoader.lookup(session);
Class<?> testClass = dcl.createDynamicClass("org.persistence.Test");
JPADynamicTypeBuilder test = new JPADynamicTypeBuilder(testClass, null, "TEST");
test.addDirectMapping("id", long.class, "T_ID");
test.setPrimaryKeyFields("T_ID");
test.addDirectMapping("col1", long.class, "T_COL1");
test.addDirectMapping("col2", int.class, "T_COL2");
test.addDirectMapping("col3", String.class, "T_COL3");
test.addDirectMapping("col4", String.class, "T_COL4");
test.addDirectMapping("col5", double.class, "T_COL5");
test.addDirectMapping("col6", double.class, "T_COL6");
DynamicHelper helper = new JPADynamicHelper(em);
helper.addTypes(true, true, test.getType());
Run Code Online (Sandbox Code Playgroud)
我注意到一切都是根据指定创建的.我试图寻找一些文档如何使用数据库序列,我注意到了JPADynamicTypeBuilder.configureSequencing(Sequence,String,String)方法.但我找不到任何关于如何做的例子.我玩弄了这个方法,我总是使用默认的排序策略,即一个名为SEQUENCE的表.
我尝试使用@GeneratedValue和@SequenceGenerator进行预编译实体,一切正常,所以我对动态实体做错了.
有谁知道我可能做错了什么?
这似乎无关紧要,但无论如何我告诉我的数据库是Oracle.
提前致谢,
瑞
我真的很困惑,列结果集映射如何工作?当我使用列而不是实体时,我映射的是什么?看看这个例子......
Query q = em.createNativeQuery(
"SELECT o.id AS order_id, " +
"o.quantity AS order_quantity, " +
"o.item AS order_item, " +
"i.name AS item_name, " +
"FROM Order o, Item i " +
"WHERE (order_quantity > 25) AND (order_item = i.id)",
"OrderResults");
@SqlResultSetMapping(name="OrderResults",
entities={
@EntityResult(entityClass=com.acme.Order.class, fields={
@FieldResult(name="id", column="order_id"),
@FieldResult(name="quantity", column="order_quantity"),
@FieldResult(name="item", column="order_item")})},
columns={
@ColumnResult(name="item_name")}
)
Run Code Online (Sandbox Code Playgroud)
我可以理解他在这里要做的是什么,实体结果将是他想要的结果集,字段将尝试将字段映射到别名,列结果到底是做什么的?它看起来不像是映射到任何东西.
我在不使用php命令的情况下创建了几个类php app/console doctrine:generate:entity,直接创建并映射了文件夹中的php类MyBundle/Entity.
生成这些类作为Doctrine实体和Mysql表的命令是什么?
在Chrome上使用开发人员工具时,我错过了一个默认显示HTML实体的功能.以下示例:
有谁知道如何启用我需要的视图.我知道Chrome有一个主题引擎但是实现的功能符合我的需求吗?
多谢你们 ;)
我想知道我应该如何处理我的实体?例如,一个名为Articles的类,带有一些datamembers(名称/标题/日期)和getter&setter.我可以将这些添加到我的文章数据库中,但最好将它们分开.所以你怎么看?
谢谢!
我正在寻找将包含html命名实体的html块转换为符合xml的块,该块使用编号的xml实体,同时保留所有html标记元素.
这是通过测试说明的基本思想:
@Test
public void testEvalHtmlEntitiesToXmlEntities() {
String input = "<a href=\"test.html\">link </a>";
String expected = "<a href=\"test.html\">link </a>";
String actual = SomeUtil.eval(input);
Assert.assertEquals(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)
是否有人知道提供此功能的类?我可以编写一个正则表达式来迭代非元素匹配并执行:
xlmString += StringEscapeUtils.escapeXml(StringEscapeUtils.unescapeHtml(htmlString));
Run Code Online (Sandbox Code Playgroud)
但希望有一种更简单的方法或已经提供此类的课程.