相关疑难解决方法(0)

是否允许XML属性值中的换行符?

我意识到它并不优雅或不合适,但它是否允许(在格式良好的XML中)XML元素中的属性值跨越多行?

例如

<some-xml-element value="this value goes over....
multiple lines!" />
Run Code Online (Sandbox Code Playgroud)

是的,我意识到有更好的写作方式.我个人会写它:

<some-xml-element>
<value>this value goes over...
multiple lines!</value>
</some-xml-element>
Run Code Online (Sandbox Code Playgroud)

要么:

<some-xml-element value="this value goes over....&#13;&#10;" />
Run Code Online (Sandbox Code Playgroud)

但是我们有自己的XML解析器,我想知道第一个例子是否在格式良好的XML中被允许.

xml xml-parsing

88
推荐指数
2
解决办法
5万
查看次数

是否可以在XML属性中包含HTML文本或CDATA?

当我尝试将HTML文本或CDATA放入我的XML属性中时,我的解析器一直得到"XML解析器失败:未终止的属性".有没有办法做到这一点,还是标准不允许这样做?

html xml

30
推荐指数
4
解决办法
5万
查看次数

保留属性空格

免责声明:以下是针对XML的罪行.这就是我试图用XSLT改变它的原因:)

我的XML目前看起来像这样:

<root>
    <object name="blarg" property1="shablarg" property2="werg".../>
    <object name="yetanotherobject" .../>
</root>
Run Code Online (Sandbox Code Playgroud)

是的,我将所有文本数据放在属性中.我希望XSLT能救我; 我想走向这样的事情:

<root>
    <object>
        <name>blarg</name>
        <property1>shablarg</name>
        ...
    </object>
    <object>
        ...
    </object>
</root>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我实际上已经完成了所有这些工作,除了我对XML的罪恶更加特殊.一些标签看起来像这样:

<object description = "This is the first line

This is the third line.  That second line full of whitespace is meaningful"/>
Run Code Online (Sandbox Code Playgroud)

我在linux下使用xsltproc,但它似乎没有任何保留空格的选项.我试图使用xsl:preserve-space和xml:space ="preserve"无济于事.我发现的每个选项似乎都适用于在元素本身内保留空格,而不是属性.每一次,以上都改为:

This is the first line This is the third line.  That second line full of whitespace is meaningful

所以问题是,我可以保留属性空白吗?

xml xslt whitespace

10
推荐指数
1
解决办法
9297
查看次数

使用 XMLStreamWriter 时如何保留属性中的空格?

使用 javax.xml.XMLStreamWriter 时,有什么方法可以保留属性中的空格吗?我知道 XMLStreamReader 将执行Attribute-Value Normalization,将\r\n\tXML 转换为空格,因此编写者需要发出实体引用(例如&#13;&#10;)以保留空格。有什么方法可以告诉作者对空白使用实体引用吗?我可以自己添加对属性的实体引用吗?

以下 JUnit3 测试通过。当我编码时"Hello,\r\n\tworld",我想得到同样的东西。但相反,解码后的值为"Hello  world"(两个空格)。

import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.stream.*;
import junit.framework.TestCase;
public class XmlStreamTest extends TestCase {
    public void testAttribute() throws XMLStreamException {
        StringWriter stringWriter = new StringWriter();
        XMLStreamWriter xmlStreamWriter = XMLOutputFactory.newFactory().createXMLStreamWriter(stringWriter);
        xmlStreamWriter.writeStartDocument();
        xmlStreamWriter.writeStartElement("root");
        xmlStreamWriter.writeAttribute("a", "Hello,\r\n\tWorld! ");
        xmlStreamWriter.writeEndElement();
        xmlStreamWriter.writeEndDocument();
        xmlStreamWriter.close();
        assertEquals("<?xml version=\"1.0\" ?><root a=\"Hello,\r\n\tWorld! \"></root>", stringWriter.toString());

        StringReader stringReader = new StringReader(stringWriter.toString());
        XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader(stringReader);
        assertEquals(XMLStreamConstants.START_DOCUMENT, xmlStreamReader.getEventType());
        assertEquals(XMLStreamConstants.START_ELEMENT, xmlStreamReader.next());
        // This is …
Run Code Online (Sandbox Code Playgroud)

java xml

6
推荐指数
0
解决办法
1112
查看次数

XML属性中允许哪些字符?

W3c规范中,我似乎无法找到允许在XML文档中的属性值中出现的字符集的定义.

  1. 它与元素的文本内容是否相同?
  2. 或者它只是一个子集(例如\n除外)?

请引用说明书的部分来回答我的问题.

xml

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

UITextView:如何从加载XML的字符串中设置'\n'?

我需要在我正在加载的XML文件中的字符串中指示"新行".

如果我硬编码字符串:

myTextView.text = [NSString stringWithString:@"Line1 \nLine2 \nLine3"];
Run Code Online (Sandbox Code Playgroud)

它显示:

Line1
Line2
Line3
Run Code Online (Sandbox Code Playgroud)

(如预期的那样)

但是,如果我将确切的字符串放在我的XML文件中:

<someNode string="Line1 \nLine2 \nLine3" />
Run Code Online (Sandbox Code Playgroud)

然后将其加载到它显示的UITableView中:

Line1 \nLine2 \nLine3
Run Code Online (Sandbox Code Playgroud)

我在某处读过'\n'字符是在编译时处理的,这是真的吗?这可以解释我所看到的行为.

如果是这种情况,我怎么能在我的XML加载字符串中定义一个新行,并仍然在UITextView中正确处理它?还有另一种方法吗?

谢谢.

xml iphone newline objective-c uitextview

0
推荐指数
1
解决办法
2117
查看次数

标签 统计

xml ×6

html ×1

iphone ×1

java ×1

newline ×1

objective-c ×1

uitextview ×1

whitespace ×1

xml-parsing ×1

xslt ×1