标签: xml-entities

如何在 Java 中解码 XHTML 和/或 HTML5 实体?

我有一些包含XHTML字符实体的字符串:

"They're quite varied"
"Sometimes the string ∈ XML standard, sometimes ∈ HTML4 standard"
"Therefore -> I need an XHTML entity decoder."
"Sadly, some strings are not valid XML & are not-quite-so-valid HTML <- but I want them to work, too."
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来解码实体?(我正在使用 Java)

我目前正在StringEscapeUtils.unescapeHtml4(myString.replace("&apos;", "\'"))用作临时黑客。可悲的是,org.apache.commons.lang3.StringEscapeUtilsunescapeHtml4unescapeXML,但没有unescapeXhtml

编辑:我确实想处理无效的 XML,例如我想要“&&xyzzy;” 解码为“&&xyzzy;”

编辑:我认为 HTML5 具有与 XHTML 几乎相同的字符实体,所以我认为 HTML 5解码器也可以。

java xhtml html-entities xml-entities

6
推荐指数
1
解决办法
1141
查看次数

如何使用xml.etree解析外部实体,如lxml.etree

我有一个脚本,使用lxml.etree以下方法解析XML :

from lxml import etree

parser = etree.XMLParser(load_dtd=True, resolve_entities=True)
tree = etree.parse('main.xml', parser=parser)
Run Code Online (Sandbox Code Playgroud)

我需要load_dtd=Trueresolve_entities=True可以具有&emptyEntry;globals.xml解决:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE map SYSTEM "globals.xml" [
    <!ENTITY dirData "${DATADIR}"> 
]>
<map 
    xmlns:map="http://my.dummy.org/map"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsschemaLocation="http://my.dummy.org/map main.xsd"
>

  &emptyEntry; <!-- from globals.xml -->

  <entry><key>KEY</key><value>VALUE</value></entry>
  <entry><key>KEY</key><value>VALUE</value></entry>
</map>
Run Code Online (Sandbox Code Playgroud)

globals.xml

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY emptyEntry "<entry></entry>">
Run Code Online (Sandbox Code Playgroud)

现在我想从非标准lxml转向标准xml.etree.但这与我的文件失败,因为load_dtd=True并且resolve_entities=True不受支持xml.etree.

是否有xml.etree解决这些实体的问题?

python xml lxml elementtree xml-entities

5
推荐指数
1
解决办法
3287
查看次数

如何通过编程方式通过XML :: Twig添加实体声明?

对于我的生活,我无法理解实体处理的XML :: Twig文档.

我有一些用HTML :: Tidy生成的XML.电话如下:

my $tidy = HTML::Tidy->new({
    'indent'          => 1,
    'break-before-br' => 1,
    'output-xhtml'    => 0,
    'output-xml'      => 1,
    'char-encoding'   => 'raw',
});

$str = "foo &nbsp; bar";
$xml = $tidy->clean("<xml>$str</xml>");
Run Code Online (Sandbox Code Playgroud)

产生:

<html>
  <head>
    <meta content="tidyp for Linux (v1.02), see www.w3.org" name="generator" />
    <title></title>
  </head>
  <body>foo &nbsp; bar</body>
</html>
Run Code Online (Sandbox Code Playgroud)

XML :: Twig(可以理解)barf &nbsp;.我想做一些转换,通过XML :: Twig运行它:

my $twig = XML::Twig->new(
  twig_handlers => {... handlers ...}
);

$twig->parse($xml);
Run Code Online (Sandbox Code Playgroud)

$twig->parse行barfs的&nbsp;,但我无法弄清楚如何添加&nbsp;元素编程.我尝试过这样的事情:

my …
Run Code Online (Sandbox Code Playgroud)

xml perl xml-twig xml-entities

4
推荐指数
1
解决办法
924
查看次数

使用Lua的Unescape数字XML实体

什么是非数字化HTML/XML实体的良好实现,例如&#10;用ASCII等效替换它们?

表示为单元测试:

local orig = "It&#039;s the &#34;end&#34; &ok;&#10;"
local fixd = unescape(orig) -- Implement this
assert( fixd == "It's the \"end\" &ok;\n" )
Run Code Online (Sandbox Code Playgroud)

html xml lua html-entities xml-entities

3
推荐指数
1
解决办法
2012
查看次数

PHP SimpleXMLElement 不会将引号转换为实体

我正在编写一个 PHP 脚本来生成一些 xml 文档,但我在 SimpleXML 和引号方面遇到了一些问题。

如果我有这样的代码:

$xml = new SimpleXMLElement('<myxml />');
$xml->addChild('title','My Feed');
$xml->addChild('description','Entity data here - &amp; &quot; &apos;');
Run Code Online (Sandbox Code Playgroud)

如果我 print_r $xml obj 然后我得到这个:

print_r($xml);
SimpleXMLElement Object
(
  [title] => My Feed
  [description] => Entity data here - & " '
)
Run Code Online (Sandbox Code Playgroud)

似乎一旦在对象中,它就会使实体回到各自的角色。但是,当我在对象上调用 asXML() 以获取 XML 时,它向我显示了以下内容:

echo $xml->asXML();
<?xml version="1.0"?>
  <myxml>
  <title>My Feed</title>
  <description>Entity data here - &amp; " '</description>
</myxml>
Run Code Online (Sandbox Code Playgroud)

它使 & 返回一个实体,但它似乎将引号保留为字符。它不应该将它们全部转换为实体吗?

php xml simplexml xml-entities

2
推荐指数
1
解决办法
1166
查看次数

标签 统计

xml-entities ×5

xml ×4

html-entities ×2

elementtree ×1

html ×1

java ×1

lua ×1

lxml ×1

perl ×1

php ×1

python ×1

simplexml ×1

xhtml ×1

xml-twig ×1