加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在ASP.NET中为Craigslist批量发布创建根RDF / XML元素

发布时间:2020-12-16 09:56:12 所属栏目:asp.Net 来源:网络整理
导读:运行这个VB.net时,我得到错误“根级别的数据无效.第1行,位置1”到达第3行时,它将RDF命名空间添加到Schemaset. Dim doc As New XmlDocument()Dim xss As New XmlSchemaSet() xss.Add("rdf","http://www.w3.org/1999/02/22-rdf-syntax-ns#")doc.Schemas = xssD
运行这个VB.net时,我得到错误“根级别的数据无效.第1行,位置1”到达第3行时,它将RDF命名空间添加到Schemaset.

Dim doc As New XmlDocument()
Dim xss As New XmlSchemaSet() 
xss.Add("rdf","http://www.w3.org/1999/02/22-rdf-syntax-ns#")
doc.Schemas = xss
Dim rdf As XmlElement = doc.CreateElement("rdf:RDF")
rdf.SetAttribute("xmlns","http://purl.org/rss/1.0/")
doc.AppendChild(rdf)
Debug.WriteLine(doc.ToString)

我正在寻找一种方法来生成craiglist批量发布的示例代码,但没有找到.net示例.我愿意使用XML或RDF库,但却找不到如何创建带冒号的根元素的好例子.我发现上面的代码可能会失败,因为.net错误不允许在schemaset中使用cdata.不确定这是否属实.

https://www.craigslist.org/about/bulk_posting_interface

<?xml version="1.0"?>

<rdf:RDF xmlns="http://purl.org/rss/1.0/"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:cl="http://www.craigslist.org/about/cl-bulk-ns/1.0">

<channel>
<items>
  <rdf:li rdf:resource="NYCBrokerHousingSample1"/>
  <rdf:li rdf:resource="NYCBrokerHousingSample2"/>
</items>

<cl:auth username="listuser@bogus.com"
         password="p0stp@rty"
         accountID="14"/>
</channel>
...

解决方法

使用XmlWriter功能(System.Xml命名空间)构建xml提要更容易,更方便.这是你的榜样.

Dim xSet As New System.Xml.XmlWriterSettings()
    xSet.Encoding = System.Text.ASCIIEncoding.UTF8
    xSet.Indent = True
    ''xSet.OmitXmlDeclaration = True ''if you wish 
    Dim sb As New StringBuilder() ''this will keep string. 
    Dim xw As System.Xml.XmlWriter = System.Xml.XmlWriter.Create(sb,xSet) ''StreamBuilder is also possible
    xw.WriteStartDocument() '' <?xml...
    xw.WriteStartElement("rdf","RDF","http://www.w3.org/1999/02/22-rdf-syntax-ns#") ''prefix,localName,NS
    xw.WriteAttributeString("xmlns","","http://purl.org/rss/1.0/") ''default NS
    xw.WriteAttributeString("xmlns","cl",Nothing,"http://www.craigslist.org/about/cl-bulk-ns/1.0") ''extra NS
    xw.WriteStartElement("channel") ''open <channel>
    xw.WriteStartElement("items")

    xw.WriteStartElement("rdf","li","http://www.w3.org/1999/02/22-rdf-syntax-ns#")
    xw.WriteAttributeString("rdf","resource","NYCBrokerHousingSample1")
    xw.WriteEndElement() ''li

    xw.WriteStartElement("rdf","NYCBrokerHousingSample2")
    xw.WriteEndElement() ''li

    xw.WriteEndElement() ''items

    xw.WriteStartElement("cl","auth",Nothing)
    xw.WriteAttributeString("username","listuser@bogus.com")
    xw.WriteAttributeString("password","p0stp@rty")
    xw.WriteAttributeString("accountID","14")
    xw.WriteEndElement() ''auth

    xw.WriteEndElement() ''channel
    xw.WriteEndElement() ''RDF
    xw.WriteEndDocument()
    xw.Flush() ''done
    xw.Close() ''cleanup
    Return sb.ToString() ''xml string

这是输出:

<?xml version="1.0" encoding="utf-16"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/" 
         xmlns:cl="http://www.craigslist.org/about/cl-bulk-ns/1.0" 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <channel>
    <items>
      <rdf:li rdf:resource="NYCBrokerHousingSample1" />
      <rdf:li rdf:resource="NYCBrokerHousingSample2" />
    </items>
    <cl:auth username="listuser@bogus.com" password="p0stp@rty" accountID="14" />
  </channel>
</rdf:RDF>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读